From: Nikos Mavrogiannopoulos Date: Fri, 29 Jul 2016 13:00:06 +0000 (+0200) Subject: gnutls_transport_set_fastopen: doc update X-Git-Tag: gnutls_3_5_3~27 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=428d692c936664219eab9abb883bf19d44e61a7d;p=thirdparty%2Fgnutls.git gnutls_transport_set_fastopen: doc update --- diff --git a/lib/system/fastopen.c b/lib/system/fastopen.c index c2f6caefe0..1c785e3f9b 100644 --- a/lib/system/fastopen.c +++ b/lib/system/fastopen.c @@ -153,22 +153,28 @@ tfo_read(gnutls_transport_ptr_t ptr, void *data, size_t data_size) * @connect_addr: is the address we want to connect to * @connect_addrlen: is the length of @connect_addr * - * Enables TCP Fast Open (TFO) when @connect_addr and @connect_addrlen are set - * before the transport socket has been connected. + * Enables TCP Fast Open (TFO) for the specified TLS client session. + * That means that TCP connection establishment and the transmission + * of the first TLS client hello packet are combined. The + * peer's address must be specified in @connect_addr and @connect_addrlen, + * and the socket specified by @fd should not be connected. * * TFO only works for TCP sockets of type AF_INET and AF_INET6. - * If the OS doesn't support TCP fast open this function will use - * connect() transparently during the first write. + * If the OS doesn't support TCP fast open this function will result + * to gnutls using connect() transparently during the first write. * - * Note: This function overrides all transport callback functions. + * Note: This function overrides all the transport callback functions. * If this is undesirable, TCP Fast Open must be implemented on the user * callback functions without calling this function. When using - * this function gnutls_transport_set_ptr() or gnutls_transport_set_int() - * must not be used. + * this function, transport callbacks must not be set, and + * gnutls_transport_set_ptr() or gnutls_transport_set_int() + * must not be called. * * On GNU/Linux TFO has to be enabled at the system layer, that is * in /proc/sys/net/ipv4/tcp_fastopen, bit 0 has to be set. * + * This function has no effect on server sessions. + * * Since: 3.5.3 **/ void @@ -180,6 +186,11 @@ gnutls_transport_set_fastopen(gnutls_session_t session, abort(); } + if (session->security_parameters.entity == GNUTLS_SERVER) { + gnutls_assert(); + return; + } + memcpy(&session->internals.tfo.connect_addr, connect_addr, connect_addrlen); session->internals.tfo.connect_addrlen = connect_addrlen; session->internals.tfo.fd = fd;