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:
parent
e1771d9b1d
commit
4062fe7ce3
|
@ -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!
|
||||
|
|
Loading…
Reference in New Issue