summaryrefslogtreecommitdiff
path: root/lib/system
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2016-07-29 15:00:06 +0200
committerNikos Mavrogiannopoulos <nmav@redhat.com>2016-07-29 15:00:06 +0200
commit428d692c936664219eab9abb883bf19d44e61a7d (patch)
tree07400848f5c50695f02ec838a2dbdefa73db26cd /lib/system
parent9cf2447d56e9437916abf4fbdc5d63e74d30bc6f (diff)
downloadgnutls-428d692c936664219eab9abb883bf19d44e61a7d.tar.gz
gnutls_transport_set_fastopen: doc update
Diffstat (limited to 'lib/system')
-rw-r--r--lib/system/fastopen.c25
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;