diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-07-29 15:00:06 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-07-29 15:00:06 +0200 |
commit | 428d692c936664219eab9abb883bf19d44e61a7d (patch) | |
tree | 07400848f5c50695f02ec838a2dbdefa73db26cd /lib/system | |
parent | 9cf2447d56e9437916abf4fbdc5d63e74d30bc6f (diff) | |
download | gnutls-428d692c936664219eab9abb883bf19d44e61a7d.tar.gz |
gnutls_transport_set_fastopen: doc update
Diffstat (limited to 'lib/system')
-rw-r--r-- | lib/system/fastopen.c | 25 |
1 files changed, 18 insertions, 7 deletions
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; |