X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=rsencoder.cpp;h=4f63131f79641d3f4156d4c51468c3c0677ba3a9;hb=590be6a0058985c8ac533a5f3bfc80b7cd2ca98c;hp=dfdbe86a4f62de6de3f609a9214393452b62936f;hpb=63a0866d71f91f19c41244cd32b6954284d547b7;p=greproxy diff --git a/rsencoder.cpp b/rsencoder.cpp index dfdbe86..4f63131 100644 --- a/rsencoder.cpp +++ b/rsencoder.cpp @@ -34,7 +34,17 @@ void RSEncoder::send_packet(uint16_t proto, const std::string &data, int incomin // Received an unfinished group. packet_history.clear(); } - sender->send_packet(proto, data, incoming_seq); + bool debug_drop_packet = false; // For testing only. + if (incoming_seq % RS_PAYLOAD_SIZE == 3) { + //debug_drop_packet = true; + } + if (debug_drop_packet) { + const unsigned char *ptr = reinterpret_cast(data.data()); + printf("DEBUG: Dropping packet seq=%d proto=0x%04x len=%d data=%02x %02x %02x %02x %02x %02x %02x %02x ...\n", + incoming_seq, proto, data.size(), ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5], ptr[6], ptr[7]); + } else { + sender->send_packet(proto, data, incoming_seq); + } packet_history.emplace_back(GREPacket{incoming_seq, proto, data}); if (packet_history.size() == RS_PAYLOAD_SIZE) { finish_group(); @@ -75,9 +85,7 @@ void RSEncoder::finish_group() const char *sdata = reinterpret_cast(data); int start_seq = packet_history[0].seq - 1; - for (int i = 0; i < RS_PARITY_SIZE; ++i) { - sender->send_packet(0xffff, string(sdata, size), start_seq - (packet_num - RS_PAYLOAD_SIZE)); - } + sender->send_packet(0xffff, string(sdata, size), start_seq - (packet_num - RS_PAYLOAD_SIZE)); }); packet_history.clear();