diff --git a/libraries/networking/src/udt/LossList.cpp b/libraries/networking/src/udt/LossList.cpp index 2e1346daae..0bf08fbc1d 100644 --- a/libraries/networking/src/udt/LossList.cpp +++ b/libraries/networking/src/udt/LossList.cpp @@ -161,20 +161,3 @@ void LossList::write(ControlPacket& packet) { packet.writePrimitive(pair.second); } } - -void LossList::read(ControlPacket& packet) { - _lossList.clear(); - - SequenceNumber first, second; - while (packet.bytesLeftToRead() > (qint64)(2 * sizeof(SequenceNumber))) { - packet.readPrimitive(&first); - packet.readPrimitive(&second); - - if (first == second) { - append(first); - } else { - append(first, second); - } - - } -} diff --git a/libraries/networking/src/udt/LossList.h b/libraries/networking/src/udt/LossList.h index c88bef8baa..5b5fb9f0c8 100644 --- a/libraries/networking/src/udt/LossList.h +++ b/libraries/networking/src/udt/LossList.h @@ -24,6 +24,8 @@ class LossList { public: LossList() {} + void clear() { _length = 0; _lossList.clear(); } + // Should always add at the end void append(SequenceNumber seq); void append(SequenceNumber start, SequenceNumber end); @@ -39,7 +41,6 @@ public: SequenceNumber popFirstSequenceNumber(); void write(ControlPacket& packet); - void read(ControlPacket& packet); private: std::list> _lossList; diff --git a/libraries/networking/src/udt/SendQueue.cpp b/libraries/networking/src/udt/SendQueue.cpp index e9f835b918..ce1ce41d13 100644 --- a/libraries/networking/src/udt/SendQueue.cpp +++ b/libraries/networking/src/udt/SendQueue.cpp @@ -18,6 +18,7 @@ #include +#include "ControlPacket.h" #include "Packet.h" #include "Socket.h" @@ -105,7 +106,19 @@ void SendQueue::nak(SequenceNumber start, SequenceNumber end) { void SendQueue::overrideNAKListFromPacket(ControlPacket& packet) { QWriteLocker locker(&_naksLock); - _naks.read(packet); + _naks.clear(); + + SequenceNumber first, second; + while (packet.bytesLeftToRead() > (qint64)(2 * sizeof(SequenceNumber))) { + packet.readPrimitive(&first); + packet.readPrimitive(&second); + + if (first == second) { + _naks.append(first); + } else { + _naks.append(first, second); + } + } } SequenceNumber SendQueue::getNextSequenceNumber() { diff --git a/libraries/networking/src/udt/SendQueue.h b/libraries/networking/src/udt/SendQueue.h index 2bb61a5002..4437565ded 100644 --- a/libraries/networking/src/udt/SendQueue.h +++ b/libraries/networking/src/udt/SendQueue.h @@ -27,9 +27,10 @@ namespace udt { -class Socket; class BasePacket; +class ControlPacket; class Packet; +class Socket; class SendQueue : public QObject { Q_OBJECT