fReceiveNext was not maintained correctly in case of out of order packets.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19813 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2007-01-15 16:10:13 +00:00
parent e1771d9b1d
commit 4062fe7ce3
1 changed files with 2 additions and 3 deletions

View File

@ -964,10 +964,9 @@ TRACE(("peer is finishing connection!"));
// put it in the receive buffer
if (buffer->size > 0) {
if (fReceiveNext == segment.sequence)
fReceiveNext += buffer->size;
TRACE(("adding data, receive next = %lu!\n", (uint32)fReceiveNext));
fReceiveQueue.Add(buffer, segment.sequence);
fReceiveNext = fReceiveQueue.NextSequence();
TRACE(("adding data, receive next = %lu!\n", (uint32)fReceiveNext));
release_sem_etc(fReceiveLock, 1, B_DO_NOT_RESCHEDULE);
// TODO: real conditional locking needed!