On 7/19/2017 11:19 PM, Olivier Bonaventure wrote: >> How do you know you're using the converter? Is the initial connection to >> that converter? Or does the converter hijack (the latter is the >> implication of the text, AFAICT). > > Consider a simple implementation using LD_PRELOAD to overload the > connect system call on Linux. When the application issues connect, it > has already set the required socket options that apply for this new > connection. The converter implementation uses the destination address > of the connect system call to create the TLV message and sets the TFO > socket option to send it during its own connect with the converter. If > the application had requested TFO, then the converter library simply > uses the regular connect call and everything is fine. The Linux API is not the TCP API. The TCP API is a generic, implementation-independent interface to upper layer protocols and applications.
This mechanism needs to be described in terms of the TCP API. Yes, the app can SEND data to the socketpair before the connection is established, per RFC793 (note - I'm using 793 terms, not unix terms here). There's nothing in RFC7413 (TFO) that confirms that TFO will succeed on a new connection and that RFC explicitly admits it did not introduce an API extension by which an application can read (RECEIVE) SYN data before the connection is established: But the client's socket may have data available to read before it's connected. This document does not cover the corresponding API change. I.e., it's important to explain what you're doing using the TCP API, not the features of an implementation (the latter can be helpful as an example, e.g., in an appendix, though). Joe
_______________________________________________ Int-area mailing list [email protected] https://www.ietf.org/mailman/listinfo/int-area
