[glib/mcatanzaro/copy-session-state: 1/2] Improve documentation of g_tls_client_connection_copy_session_state()



commit 001d5c19e6a56a7ec53270e6ef603a7a24f2e1da
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Wed Aug 14 09:32:49 2019 -0500

    Improve documentation of g_tls_client_connection_copy_session_state()
    
    This function has numerous undocumented limitations. In particular, it
    is not possible to ensure this function actually does anything. Document
    these problems.

 gio/gtlsclientconnection.c | 42 ++++++++++++++++++++++++++++++++++++------
 1 file changed, 36 insertions(+), 6 deletions(-)
---
diff --git a/gio/gtlsclientconnection.c b/gio/gtlsclientconnection.c
index b38fad630..561cf9339 100644
--- a/gio/gtlsclientconnection.c
+++ b/gio/gtlsclientconnection.c
@@ -359,12 +359,42 @@ g_tls_client_connection_get_accepted_cas (GTlsClientConnection *conn)
  * @conn: a #GTlsClientConnection
  * @source: a #GTlsClientConnection
  *
- * Copies session state from one connection to another. This is
- * not normally needed, but may be used when the same session
- * needs to be used between different endpoints as is required
- * by some protocols such as FTP over TLS. @source should have
- * already completed a handshake, and @conn should not have
- * completed a handshake.
+ * Possibly copies session state from one connection to another, for use
+ * in TLS session resumption. This is not normally needed, but may be
+ * used when the same session needs to be used between different
+ * endpoints, as is required by some protocols, such as FTP over TLS.
+ * @source should have already completed a handshake, and @conn should
+ * not have completed a handshake.
+ *
+ * It is not possible to know whether a call to this function will
+ * actually do anything. Because session resumption is normally used
+ * only for performance benefit, the TLS backend might not implement
+ * this function. Even if implemented, it may not actually succeed in
+ * allowing @conn to resume @source's TLS session, because the server
+ * may not have sent a session resumption token to @source, or it may
+ * refuse to accept the token from @conn. There is no way to know
+ * whether a call to this function is actually successful.
+ *
+ * Using this function is not required to benefit from session
+ * resumption. If the TLS backend supports session resumption, the
+ * session will be resumed automatically if it is possible to do so
+ * without weakening the privacy guarantees normally provided by TLS,
+ * without need to call this function. For example, with TLS 1.3,
+ * a session ticket will be automatically copied from any
+ * #GTlsClientConnection that has previously received session tickets
+ * from the server, provided a ticket is available that has not
+ * previously been used for session resumption, since session ticket
+ * reuse would be a privacy weakness. Using this function causes the
+ * ticket to be copied without regard for privacy considerations.
+ *
+ * Since TLS 1.3, if @source has not yet received a session ticket, this
+ * function may block for a reasonable but unknown amount of time to
+ * wait for a ticket, performing a read internally, before giving up.
+ * There is no way to determine whether this function will block,
+ * because there is no way to know whether a session ticket is
+ * available, but waiting until after the first read has been performed
+ * will reduce the chances of it blocking. If you require nonblocking
+ * behavior, you must not use this function.
  *
  * Since: 2.46
  */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]