X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=client.cpp;h=b226d5e3fb916478f9dd5edb94cadb358d9c0dd1;hp=04518c8c2f58a97e9afcd877b77c91863d319bcc;hb=94cd6d8799191a79fde828abfbc30cf9951c1cfc;hpb=5cd46e39b4063d94f6dc559ae350beeb8406a8f9 diff --git a/client.cpp b/client.cpp index 04518c8..b226d5e 100644 --- a/client.cpp +++ b/client.cpp @@ -5,15 +5,17 @@ #include "client.h" #include "log.h" -#include "markpool.h" #include "state.pb.h" #include "stream.h" +#ifndef SO_MAX_PACING_RATE +#define SO_MAX_PACING_RATE 47 +#endif + using namespace std; Client::Client(int sock) : sock(sock), - fwmark(0), connect_time(time(NULL)), state(Client::READING_REQUEST), stream(NULL), @@ -60,7 +62,7 @@ Client::Client(const ClientProto &serialized, Stream *stream) connect_time(serialized.connect_time()), state(State(serialized.state())), request(serialized.request()), - stream_id(serialized.stream_id()), + url(serialized.url()), stream(stream), header_or_error(serialized.header_or_error()), header_or_error_bytes_sent(serialized.header_or_error_bytes_sent()), @@ -69,16 +71,12 @@ Client::Client(const ClientProto &serialized, Stream *stream) bytes_lost(serialized.bytes_lost()), num_loss_events(serialized.num_loss_events()) { - if (stream != NULL && stream->mark_pool != NULL) { - fwmark = stream->mark_pool->get_mark(); - } else { - fwmark = 0; // No mark. - } - if (setsockopt(sock, SOL_SOCKET, SO_MARK, &fwmark, sizeof(fwmark)) == -1) { - if (fwmark != 0) { - log_perror("setsockopt(SO_MARK)"); + if (stream != NULL) { + if (setsockopt(sock, SOL_SOCKET, SO_MAX_PACING_RATE, &stream->pacing_rate, sizeof(stream->pacing_rate)) == -1) { + if (stream->pacing_rate != ~0U) { + log_perror("setsockopt(SO_MAX_PACING_RATE)"); + } } - fwmark = 0; } } @@ -90,7 +88,7 @@ ClientProto Client::serialize() const serialized.set_connect_time(connect_time); serialized.set_state(state); serialized.set_request(request); - serialized.set_stream_id(stream_id); + serialized.set_url(url); serialized.set_header_or_error(header_or_error); serialized.set_header_or_error_bytes_sent(serialized.header_or_error_bytes_sent()); serialized.set_stream_pos(stream_pos); @@ -103,13 +101,12 @@ ClientProto Client::serialize() const ClientStats Client::get_stats() const { ClientStats stats; - if (stream_id.empty()) { - stats.stream_id = "-"; + if (url.empty()) { + stats.url = "-"; } else { - stats.stream_id = stream_id; + stats.url = url; } stats.sock = sock; - stats.fwmark = fwmark; stats.remote_addr = remote_addr; stats.connect_time = connect_time; stats.bytes_sent = bytes_sent;