From: Nikos Mavrogiannopoulos Date: Tue, 5 May 2015 12:35:45 +0000 (+0200) Subject: dtls: combined the total timeouts of DTLS and TLS handshake X-Git-Tag: gnutls_3_4_2~101 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c9b6fbf4a8362552981f65eb3e6dbabc1650a04e;p=thirdparty%2Fgnutls.git dtls: combined the total timeouts of DTLS and TLS handshake That also makes the waits for packets more robust against blocking. --- diff --git a/lib/gnutls_dtls.c b/lib/gnutls_dtls.c index 06ae8f67cf..30eb6ac170 100644 --- a/lib/gnutls_dtls.c +++ b/lib/gnutls_dtls.c @@ -290,7 +290,7 @@ int _dtls_transmit(gnutls_session_t session) timespec_sub_ms(&now, &session->internals.dtls. handshake_start_time); - if (diff >= session->internals.dtls.total_timeout_ms) { + if (diff >= session->internals.handshake_timeout_ms) { _gnutls_dtls_log("Session timeout: %u ms\n", diff); ret = gnutls_assert_val(GNUTLS_E_TIMEDOUT); goto end_flight; @@ -559,7 +559,7 @@ void gnutls_dtls_set_timeouts(gnutls_session_t session, unsigned int total_timeout) { session->internals.dtls.retrans_timeout_ms = retrans_timeout; - session->internals.dtls.total_timeout_ms = total_timeout; + session->internals.handshake_timeout_ms = total_timeout; } /** diff --git a/lib/gnutls_dtls.h b/lib/gnutls_dtls.h index 244732822d..ed8c092859 100644 --- a/lib/gnutls_dtls.h +++ b/lib/gnutls_dtls.h @@ -42,7 +42,7 @@ void _dtls_reset_hsk_state(gnutls_session_t session); gettime(&_now); \ \ _diff = timespec_sub_ms(&_now, &session->internals.dtls.handshake_start_time); \ - if (_diff > session->internals.dtls.total_timeout_ms) \ + if (_diff > session->internals.handshake_timeout_ms) \ { \ _gnutls_dtls_log("Session timeout: %u ms\n", _diff); \ return gnutls_assert_val(GNUTLS_E_TIMEDOUT); \ diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h index 3e242b156d..cdd0ee7c45 100644 --- a/lib/gnutls_int.h +++ b/lib/gnutls_int.h @@ -727,8 +727,6 @@ typedef struct { /* the retransmission timeout in milliseconds */ unsigned int retrans_timeout_ms; - /* the connection timeout in milliseconds */ - unsigned int total_timeout_ms; unsigned int hsk_hello_verify_requests; diff --git a/lib/gnutls_state.c b/lib/gnutls_state.c index dffa9832d6..e3463d9b07 100644 --- a/lib/gnutls_state.c +++ b/lib/gnutls_state.c @@ -392,8 +392,7 @@ int gnutls_init(gnutls_session_t * session, unsigned int flags) (*session)->internals.dtls.mtu = DTLS_DEFAULT_MTU; (*session)->internals.transport = GNUTLS_DGRAM; - (*session)->internals.dtls.retrans_timeout_ms = DTLS_RETRANS_TIMEOUT; - (*session)->internals.dtls.total_timeout_ms = 60000; + gnutls_dtls_set_timeouts(*session, DTLS_RETRANS_TIMEOUT, 60000); } else { (*session)->internals.transport = GNUTLS_STREAM; }