]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
gnutls_transport_set_fastopen: doc update
authorNikos Mavrogiannopoulos <nmav@redhat.com>
Fri, 29 Jul 2016 13:00:06 +0000 (15:00 +0200)
committerNikos Mavrogiannopoulos <nmav@redhat.com>
Fri, 29 Jul 2016 13:00:06 +0000 (15:00 +0200)
lib/system/fastopen.c

index c2f6caefe04ae4824f8196068809dc4bf76c586d..1c785e3f9be61954b1c741618b27fc1e05f57c32 100644 (file)
@@ -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;