Only call dtls1_start_timer() once
authorMatt Caswell <matt@openssl.org>
Wed, 2 Jun 2021 16:19:23 +0000 (17:19 +0100)
committerPauli <pauli@openssl.org>
Fri, 4 Jun 2021 01:06:08 +0000 (11:06 +1000)
The function dtls1_handle_timeout() calls dtls1_double_timeout() which
was calling dtls1_start_timer(). However dtls1_start_timer() is also
called directly by dtls1_handle_timeout(). We only need to start the timer
once.

Fixes #15561

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15595)

ssl/d1_lib.c
ssl/ssl_local.h

index f9ad4ed684a3448406e55c793646b7d3a2f44c10..a986252866ba1a77f498426eaaba06fea57510ca 100644 (file)
@@ -342,12 +342,11 @@ int dtls1_is_timer_expired(SSL *s)
     return 1;
 }
 
-void dtls1_double_timeout(SSL *s)
+static void dtls1_double_timeout(SSL *s)
 {
     s->d1->timeout_duration_us *= 2;
     if (s->d1->timeout_duration_us > 60000000)
         s->d1->timeout_duration_us = 60000000;
-    dtls1_start_timer(s);
 }
 
 void dtls1_stop_timer(SSL *s)
index b222fc6a2d5c10c15155a969a0c16462df3b25b3..09413a44fa55051ee95372daa2ccefada8a04451 100644 (file)
@@ -2567,7 +2567,6 @@ __owur int dtls1_handle_timeout(SSL *s);
 void dtls1_start_timer(SSL *s);
 void dtls1_stop_timer(SSL *s);
 __owur int dtls1_is_timer_expired(SSL *s);
-void dtls1_double_timeout(SSL *s);
 __owur int dtls_raw_hello_verify_request(WPACKET *pkt, unsigned char *cookie,
                                          size_t cookie_len);
 __owur size_t dtls1_min_mtu(SSL *s);