X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=reorderer.cpp;fp=reorderer.cpp;h=697f8189d3a05da187d0fb74ed8149f86f50d19c;hb=3bcabb4fd4764b0804b8b44cb967edf7369cc714;hp=e4cafe124416d19b1ae231fce9d201c69d72f7de;hpb=4c15e1ffd081f5e2f7840a6dea58b131c4358533;p=greproxy diff --git a/reorderer.cpp b/reorderer.cpp index e4cafe1..697f818 100644 --- a/reorderer.cpp +++ b/reorderer.cpp @@ -40,12 +40,14 @@ void Reorderer::send_packet(uint16_t proto, const string& data, int seq) printf("Gave up waiting for packets [%d,%d> (buffer full)\n", last_seq + 1, packet_buffer.top().seq); silence = true; + num_lost_packets += packet_buffer.top().seq - (last_seq + 1); last_seq = packet_buffer.top().seq - 1; } else if (!packet_buffer.empty() && tdiff(packet_buffer.top().ts, now) > TIMEOUT_SEC) { printf("Gave up waiting for packets [%d,%d> (timeout)\n", last_seq + 1, packet_buffer.top().seq); silence = true; + num_lost_packets += packet_buffer.top().seq - (last_seq + 1); last_seq = packet_buffer.top().seq - 1; } @@ -84,9 +86,12 @@ void Reorderer::send_packet(uint16_t proto, const string& data, int seq) packet_buffer.pop(); last_seq = front_seq; last_sent_packet = now; - if (!silence && !packet_buffer.empty()) { - printf("Reordering with packet buffer size %d: seq=%d new_front_seq=%d\n", int(packet_buffer.size()), front_seq, packet_buffer.top().seq); - silence = true; + if (!packet_buffer.empty()) { + ++num_reorders; + if (!silence) { + printf("Reordering with packet buffer size %d: seq=%d new_front_seq=%d\n", int(packet_buffer.size()), front_seq, packet_buffer.top().seq); + silence = true; + } } } }