]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Corrected session resumption for DTLS
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 26 Feb 2012 09:50:53 +0000 (10:50 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 26 Feb 2012 09:50:53 +0000 (10:50 +0100)
lib/gnutls_handshake.c

index 648ed1cdbfd8e95d15f53f254ff82d3114de096f..e6f3f27200be5e04beaacdcf93d8425a9f55a151 100644 (file)
@@ -436,10 +436,20 @@ _gnutls_read_client_hello (gnutls_session_t session, uint8_t * data,
       return GNUTLS_E_UNEXPECTED_PACKET_LENGTH;
     }
   DECR_LEN (len, session_id_len);
-
   session_id = &data[pos];
-  ret = _gnutls_server_restore_session (session, session_id, session_id_len);
   pos += session_id_len;
+
+  if (IS_DTLS(session))
+   {
+     int cookie_size;
+
+     DECR_LEN (len, 1);
+     cookie_size = data[pos++];
+     DECR_LEN (len, cookie_size);
+     pos+=cookie_size;
+   }
+
+  ret = _gnutls_server_restore_session (session, session_id, session_id_len);
   
   if (session_id_len > 0) session->internals.resumption_requested = 1;
 
@@ -486,16 +496,6 @@ _gnutls_read_client_hello (gnutls_session_t session, uint8_t * data,
       session->internals.resumed = RESUME_FALSE;
     }
 
-  if (IS_DTLS(session))
-   {
-     int cookie_size;
-
-     DECR_LEN (len, 1);
-     cookie_size = data[pos++];
-     DECR_LEN (len, cookie_size);
-     pos+=cookie_size;
-   }
-
   /* Remember ciphersuites for later
    */
   DECR_LEN (len, 2);