Blame doc/socket-api.texi

Packit 549fdc
Packit 549fdc
@subheading gnutls_transport_set_fastopen
Packit 549fdc
@anchor{gnutls_transport_set_fastopen}
Packit 549fdc
@deftypefun {void} {gnutls_transport_set_fastopen} (gnutls_session_t @var{session}, int @var{fd}, struct sockaddr * @var{connect_addr}, socklen_t @var{connect_addrlen}, unsigned int @var{flags})
Packit 549fdc
@var{session}: is a @code{gnutls_session_t}  type.
Packit 549fdc
Packit 549fdc
@var{fd}: is the session's socket descriptor
Packit 549fdc
Packit 549fdc
@var{connect_addr}: is the address we want to connect to
Packit 549fdc
Packit 549fdc
@var{connect_addrlen}: is the length of  @code{connect_addr} 
Packit 549fdc
Packit 549fdc
@var{flags}: must be zero
Packit 549fdc
Packit 549fdc
Enables TCP Fast Open (TFO) for the specified TLS client session.
Packit 549fdc
That means that TCP connection establishment and the transmission
Packit 549fdc
of the first TLS client hello packet are combined. The
Packit 549fdc
peer's address must be  specified in  @code{connect_addr} and  @code{connect_addrlen} ,
Packit 549fdc
and the socket specified by  @code{fd} should not be connected.
Packit 549fdc
Packit 549fdc
TFO only works for TCP sockets of type AF_INET and AF_INET6.
Packit 549fdc
If the OS doesn't support TCP fast open this function will result
Packit 549fdc
to gnutls using @code{connect()}  transparently during the first write.
Packit 549fdc
Packit 549fdc
@strong{Note:} This function overrides all the transport callback functions.
Packit 549fdc
If this is undesirable, TCP Fast Open must be implemented on the user
Packit 549fdc
callback functions without calling this function. When using
Packit 549fdc
this function, transport callbacks must not be set, and 
Packit 549fdc
@code{gnutls_transport_set_ptr()}  or @code{gnutls_transport_set_int()} 
Packit 549fdc
must not be called.
Packit 549fdc
Packit 549fdc
On GNU/Linux TFO has to be enabled at the system layer, that is
Packit 549fdc
in /proc/sys/net/ipv4/tcp_fastopen, bit 0 has to be set.
Packit 549fdc
Packit 549fdc
This function has no effect on server sessions.
Packit 549fdc
Packit 549fdc
@strong{Since:} 3.5.3
Packit 549fdc
@end deftypefun
Packit 549fdc