]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
If a client hello is received immediately after a completed handshake delete the...
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 26 Feb 2012 11:25:16 +0000 (12:25 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 26 Feb 2012 11:25:16 +0000 (12:25 +0100)
lib/gnutls_record.c

index 8bf608bbafb21040a83e59734d97811d58f04396..216737c264ef4f8b0f80e748a5a56f81b23c2628 100644 (file)
@@ -690,13 +690,22 @@ record_add_to_buffers (gnutls_session_t session,
                 
               if (_dtls_is_async(session) && _dtls_async_timer_active(session))
                 {
-                  ret = _dtls_retransmit(session);
-                  if (ret == 0) 
+                  if (session->security_parameters.entity == GNUTLS_SERVER &&
+                      bufel->htype == GNUTLS_HANDSHAKE_CLIENT_HELLO)
                     {
-                      ret = gnutls_assert_val(GNUTLS_E_AGAIN);
-                      goto unexpected_packet;
+                      /* client requested rehandshake. Delete the timer */
+                      _dtls_async_timer_delete(session);
+                    }
+                  else
+                    {
+                      ret = _dtls_retransmit(session);
+                      if (ret == 0) 
+                        {
+                          ret = gnutls_assert_val(GNUTLS_E_AGAIN);
+                          goto unexpected_packet;
+                        }
+                      goto cleanup;
                     }
-                  goto cleanup;
                 }
             }