From 34fe2a0994015dc72813e2315fbd67b1b648e23c Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 8 Feb 2015 01:32:21 +0100 Subject: [PATCH] Fix another crippling RS decoding bug. --- rsdecoder.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/rsdecoder.cpp b/rsdecoder.cpp index 8a27896..9ba69a5 100644 --- a/rsdecoder.cpp +++ b/rsdecoder.cpp @@ -95,13 +95,18 @@ void RSDecoder::send_packet(uint16_t proto, const std::string &data, int incomin const auto it = group.packets.find(packet_num); if (it == group.packets.end()) { missing_packets.push_back(i); - } else { + } else if (i < RS_PAYLOAD_SIZE) { + // Regular packet. const GREPacket &packet = it->second; uint16_t proto_be = htons(packet.proto); memcpy(&p[0], &proto_be, sizeof(uint16_t)); uint16_t len_be = htons(packet.data.size()); memcpy(&p[2], &len_be, sizeof(uint16_t)); memcpy(&p[4], packet.data.data(), packet.data.size()); + } else { + // RS packet. + const GREPacket &packet = it->second; + memcpy(&p[0], packet.data.data(), packet.data.size()); } padded_packets.push_back(p); } -- 2.39.2