]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Added gnutls_session_resumption_requested().
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 11 Jan 2012 19:22:14 +0000 (20:22 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 11 Jan 2012 19:22:14 +0000 (20:22 +0100)
NEWS
lib/gnutls_handshake.c
lib/gnutls_int.h
lib/gnutls_state.c
lib/includes/gnutls/gnutls.h.in
lib/libgnutls.map

diff --git a/NEWS b/NEWS
index aa7f17fd1f6ddf2fd84310ea0e2376e500b346b9..ef863198fa1b043d36da979fc2015956b52f40de 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -20,6 +20,7 @@ return a descriptive name of a DN OID.
 ** API and ABI modifications:
 gnutls_pubkey_encrypt_data: Added
 gnutls_x509_dn_oid_name: Added
+gnutls_session_resumption_requested: Added
 
 * Version 3.0.11 (released 2012-01-06)
 
index 805bed586a38dcd036798e0be2f368cb3af658ed..36cf8a77111ac53f141ff6c2da2b0a5779ccd3e3 100644 (file)
@@ -441,6 +441,8 @@ _gnutls_read_client_hello (gnutls_session_t session, opaque * data,
   session_id = &data[pos];
   ret = _gnutls_server_restore_session (session, session_id, session_id_len);
   pos += session_id_len;
+  
+  if (session_id_len > 0) session->internals.resumption_requested = 1;
 
   if (ret == 0)
     {                           /* resumed using default TLS resumption! */
index 08954914bf540e47f0d846959dc73a78c0cfff7f..d2119e1742b369c8ec77ee52617778cfd1859fc4 100644 (file)
@@ -683,7 +683,8 @@ typedef struct
   struct gnutls_priority_st priorities;
 
   /* resumed session */
-  unsigned int resumed:1;                /* RESUME_TRUE or FALSE - if we are resuming a session */
+  unsigned int resumed:1;  /* RESUME_TRUE or FALSE - if we are resuming a session */
+  unsigned int resumption_requested:1; /* non-zero if resumption was requested by client */
   security_parameters_st resumed_security_parameters;
 
   /* These buffers are used in the handshake
index 712ba1dadb3c2c723412acdff3988e97c0791fbf..4f20465ebe47570ab290e5cb113ae922fb291c09 100644 (file)
@@ -1,6 +1,5 @@
 /*
- * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- * Free Software Foundation, Inc.
+ * Copyright (C) 2002-2012 Free Software Foundation, Inc.
  *
  * Author: Nikos Mavrogiannopoulos
  *
@@ -1112,6 +1111,28 @@ gnutls_session_is_resumed (gnutls_session_t session)
   return 0;
 }
 
+/**
+ * gnutls_session_resumption_requested:
+ * @session: is a #gnutls_session_t structure.
+ *
+ * Check whether the client has asked for session resumption.
+ * This function is valid only on server side.
+ *
+ * Returns: non zero if session resumption was asked, or a zero if not.
+ **/
+int
+gnutls_session_resumption_requested(gnutls_session_t session)
+{
+  if (session->security_parameters.entity == GNUTLS_CLIENT)
+    {
+      return 0;
+    }
+  else
+    {
+      return session->internals.resumption_requested;
+    }
+}
+
 /*-
  * _gnutls_session_is_export - Used to check whether this session is of export grade
  * @session: is a #gnutls_session_t structure.
index 424deaecc8cba68548a882b38e66d0bb2eaec7c6..296ca4adb918bbe7cb8c9e3559e638602515cd65 100644 (file)
@@ -1,5 +1,5 @@
 /* -*- c -*-
- * Copyright (C) 2000-2011 Free Software Foundation, Inc.
+ * Copyright (C) 2000-2012 Free Software Foundation, Inc.
  *
  * Author: Nikos Mavrogiannopoulos
  *
@@ -959,6 +959,7 @@ gnutls_ecc_curve_t gnutls_ecc_curve_get(gnutls_session_t session);
 /* checks if this session is a resumed one 
  */
   int gnutls_session_is_resumed (gnutls_session_t session);
+  int gnutls_session_resumption_requested (gnutls_session_t session);
 
   typedef int (*gnutls_db_store_func) (void *, gnutls_datum_t key,
                                        gnutls_datum_t data);
index d570cb1cb542fdbfd473b067374a351a177e2c01..54179506bf332e0c86f15684ad6e492bd74daefb 100644 (file)
@@ -729,6 +729,7 @@ GNUTLS_3_0_0 {
        gnutls_random_art;
        gnutls_pubkey_encrypt_data;
        gnutls_x509_dn_oid_name;
+       gnutls_session_resumption_requested;
 } GNUTLS_2_12;
 
 GNUTLS_PRIVATE {