Page MenuHomeFreeBSD

tcp: fix simultaneous open and refine e80062a2d43

Authored by glebius on Sep 21 2022, 3:24 AM.
Referenced Files
Unknown Object (File)
Mon, May 15, 10:52 PM
Unknown Object (File)
Apr 20 2023, 3:39 PM
Unknown Object (File)
Mar 25 2023, 8:16 PM
Unknown Object (File)
Mar 1 2023, 5:46 PM
Unknown Object (File)
Jan 8 2023, 5:28 PM
Unknown Object (File)
Jan 7 2023, 6:32 PM
Unknown Object (File)
Jan 6 2023, 12:29 AM
Unknown Object (File)
Dec 15 2022, 7:56 PM


  • The soisconnected() call on transition from SYN_RCVD to ESTABLISHED is also necessary for a half-synchronized connection. Fix that just setting the flag, when we transfer SYN-SENT -> SYN-RECEIVED.
  • Provide a comment that explains at what conditions the call to soisconnected() is necessary.
  • Hence mechanically rename the TF_INCQUEUE flag to TF_SONOTCONN.
  • Extend the change to the BBR and RACK stacks.

Note: the interaction between the accept_filter(9) and the socket layer
is not fully consistent, yet. For most accept filters this call to
soisconnected() will not move the connection from the incomplete queue
to the complete. The move would happen only when the filter has received
the desired data, and soisconnected() would be called once again from
sorwakeup(). Ideally, we should mark socket as connected only there,
and leave the soisconnected() from SYN_RCVD->ESTABLISHED only for the
simultaneous open case. However, this doesn't yet work.

Diff Detail

rG FreeBSD src repository
Lint Not Applicable
Tests Not Applicable