Bug 2796 - NSC TCP transmission flow control not working
NSC TCP transmission flow control not working
Status: RESOLVED FIXED
Product: ns-3
Classification: Unclassified
Component: nsc-tcp
unspecified
All All
: P3 normal
Assigned To: Florian Westphal
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2017-10-05 11:41 UTC by Tom Henderson
Modified: 2017-10-05 13:49 UTC (History)
1 user (show)

See Also:


Attachments
test program to reproduce the problem (5.79 KB, text/x-c++src)
2017-10-05 13:25 UTC, Tom Henderson
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tom Henderson 2017-10-05 11:41:37 UTC
NscTcpSocketImpl::SendPendingData() will write to NSC using:
m_nscTcpSocket->send_data()

If the underlying NSC socket buffer becomes full, the return value of send_data() will indicate this and SendPendingData() will return false, and some data will be sitting in the staging buffer m_txBuffer.  Later, an NSCWakeup() may trigger the emptying of this buffer (since NSC may later have space), but Socket::NotifySend() is never called to unblock the application, and the TCP transfer will stall.
Comment 1 Tom Henderson 2017-10-05 13:25:04 UTC
Created attachment 2931 [details]
test program to reproduce the problem
Comment 2 Tom Henderson 2017-10-05 13:49:40 UTC
fixed in 13109:0f13cb543416