Bugzilla – Bug 2794
Handling SYN+ACK after SYN in tcp-socket-base.cc
Last modified: 2017-10-05 10:28:47 EDT
Reported on ns-3-users list:
Created attachment 2929 [details]
test case to reproduce
Enabling this program in the src/internet/test directory will demonstrate the problem.
Run it as:
NS_LOG="TcpSocketBase" ./waf --run 'test-runner --suite=tcp-handshake' > log.out 2>&1
The test forces the loss of the first SYN+ACK, but not subsequent ones.
The log will show that the TCP will repeatedly resend SYN+ACK then give up.
On line 12, if ENABLE_DATA is enabled, the test will get by ths because the ACK (of SYN+ACK) comes in the initial data from the source.
My sense of this is that an uncommon scenario would trigger this bug:
1) client initiates TCP session to server (via connect()).
2) despite completing the connection (from its perspective) the client leaves the connection open and sends no data to the server.