From a7bb47fbccbd764847ec4fb12a70ce1d2fe6cf02 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 26 Feb 2016 11:20:31 -0800 Subject: [PATCH] Fix initialization of variables for SendQueue and Connection --- libraries/networking/src/udt/Connection.cpp | 7 +++++++ libraries/networking/src/udt/SendQueue.cpp | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/Connection.cpp b/libraries/networking/src/udt/Connection.cpp index 0e1f3ddefb..1ab8441ba3 100644 --- a/libraries/networking/src/udt/Connection.cpp +++ b/libraries/networking/src/udt/Connection.cpp @@ -88,6 +88,7 @@ SendQueue& Connection::getSendQueue() { // Lasily create send queue _sendQueue = SendQueue::create(_parentSocket, _destination); + _lastReceivedACK = _sendQueue->getCurrentSequenceNumber(); #ifdef UDT_CONNECTION_DEBUG qCDebug(networking) << "Created SendQueue for connection to" << _destination; @@ -410,6 +411,12 @@ bool Connection::processReceivedSequenceNumber(SequenceNumber sequenceNumber, in // refuse to process any packets until we've received the handshake return false; } + + if (!_hasReceivedData) { + _initialReceiveSequenceNumber = sequenceNumber; + _lastReceivedSequenceNumber = sequenceNumber - 1; + _lastSentACK = sequenceNumber - 1; + } _isReceivingData = _hasReceivedData = true; diff --git a/libraries/networking/src/udt/SendQueue.cpp b/libraries/networking/src/udt/SendQueue.cpp index 8a8105bb26..77b0c53da7 100644 --- a/libraries/networking/src/udt/SendQueue.cpp +++ b/libraries/networking/src/udt/SendQueue.cpp @@ -92,7 +92,7 @@ SendQueue::SendQueue(Socket* socket, HifiSockAddr dest) : // set our member variables from randomized initial number _currentSequenceNumber = _initialSequenceNumber - 1; _atomicCurrentSequenceNumber = uint32_t(_currentSequenceNumber); - _lastACKSequenceNumber = uint32_t(_initialSequenceNumber); + _lastACKSequenceNumber = uint32_t(_currentSequenceNumber) - 1; } void SendQueue::queuePacket(std::unique_ptr packet) {