Bug 2796

Summary: NSC TCP transmission flow control not working
Product: ns-3 Reporter: Tom Henderson <tomh>
Component: nsc-tcpAssignee: Florian Westphal <fw-ns3>
Status: RESOLVED FIXED    
Severity: normal CC: ns-bugs
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Attachments: test program to reproduce the problem

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