You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If an application does a large write and then a shutdown(SHUT_WR), the FIN packet seems to be sent before the data (and even before acknowledging the peer's SYN). For example with the client:
We can see that the 1000 bytes are sent after the FIN packet, which leads to bugs.
@robgjansen This might be related to the tgen stream issue, where we can close the socket while there is still data in the send buffer, and it seems like the FIN might be sent out-of-order.
Also worth noting that the sequence numbers seem to be ordered correctly (the data has SEQ=2 and the FIN has SEQ=3), even though they're sent out-of-order.
I'm not sure exactly what's happening within shadow's TCP code. It seems like the server is dropping the FIN, receiving the data, and then the client is never retransmitting the FIN.
If an application does a large write and then a
shutdown(SHUT_WR)
, the FIN packet seems to be sent before the data (and even before acknowledging the peer's SYN). For example with the client:Shadow gives the pcap:
We can see that the 1000 bytes are sent after the FIN packet, which leads to bugs.
@robgjansen This might be related to the tgen stream issue, where we can close the socket while there is still data in the send buffer, and it seems like the FIN might be sent out-of-order.
Server code
The text was updated successfully, but these errors were encountered: