From 24fd39dfa31f88323f7b7c8077d9794b3ca97458 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 21 Mar 2016 11:36:23 -0700 Subject: [PATCH] make sure NAKs is empty before append from timeout --- libraries/networking/src/udt/SendQueue.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/networking/src/udt/SendQueue.cpp b/libraries/networking/src/udt/SendQueue.cpp index 2de23c5d0a..9ffc3587ae 100644 --- a/libraries/networking/src/udt/SendQueue.cpp +++ b/libraries/networking/src/udt/SendQueue.cpp @@ -510,12 +510,12 @@ bool SendQueue::isInactive(bool sentAPacket) { auto cvStatus = _emptyCondition.wait_for(locker, waitDuration); if (cvStatus == std::cv_status::timeout) { - if (SequenceNumber(_lastACKSequenceNumber) < _currentSequenceNumber) { + if (_naks.isEmpty() && SequenceNumber(_lastACKSequenceNumber) < _currentSequenceNumber) { // after a timeout if we still have sent packets that the client hasn't ACKed we // add them to the loss list // Note that thanks to the DoubleLock we have the _naksLock right now - _naks.insert(SequenceNumber(_lastACKSequenceNumber) + 1, _currentSequenceNumber); + _naks.append(SequenceNumber(_lastACKSequenceNumber) + 1, _currentSequenceNumber); } } }