Blame doc/socket-api.texi

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