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:
@@ -964,10 +964,9 @@ TRACE(("peer is finishing connection!"));
|
|||||||
// put it in the receive buffer
|
// put it in the receive buffer
|
||||||
|
|
||||||
if (buffer->size > 0) {
|
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);
|
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);
|
release_sem_etc(fReceiveLock, 1, B_DO_NOT_RESCHEDULE);
|
||||||
// TODO: real conditional locking needed!
|
// TODO: real conditional locking needed!
|
||||||
|
|||||||
Reference in New Issue
Block a user