From: Simon Josefsson Date: Fri, 2 Mar 2012 12:18:18 +0000 (+0100) Subject: De-inline some dtls functions. X-Git-Tag: gnutls_3_0_15~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=14ae51ce07e86a474d5a9c62bcbf19fed83aef5d;p=thirdparty%2Fgnutls.git De-inline some dtls functions. Avoids compiler error on gcc 4.4.5 (Debian Squeeze) that complains about "call is unlikely and code size would grow". --- diff --git a/lib/gnutls_dtls.c b/lib/gnutls_dtls.c index 93ba467a07..f07b300cbc 100644 --- a/lib/gnutls_dtls.c +++ b/lib/gnutls_dtls.c @@ -36,6 +36,28 @@ #include #include +/* returns a-b in ms */ +unsigned int +_dtls_timespec_sub_ms (struct timespec *a, struct timespec *b) +{ + return (a->tv_sec * 1000 + a->tv_nsec / (1000 * 1000) - + (b->tv_sec * 1000 + b->tv_nsec / (1000 * 1000))); +} + +void +_dtls_async_timer_delete (gnutls_session_t session) +{ + if (session->internals.dtls.async_term != 0) + { + _gnutls_dtls_log ("DTLS[%p]: Deinitializing previous handshake state.\n", session); + session->internals.dtls.async_term = 0; /* turn off "timer" */ + + _dtls_reset_hsk_state(session); + _gnutls_handshake_io_buffer_clear (session); + _gnutls_epoch_gc(session); + } +} + /* This function fragments and transmits a previously buffered * outgoing message. It accepts mtu_data which is a buffer to * be reused (should be set to NULL initially). @@ -233,7 +255,7 @@ unsigned int timeout; { /* if no retransmission is required yet just return */ - if (timespec_sub_ms(&now, &session->internals.dtls.last_retransmit) < TIMER_WINDOW) + if (_dtls_timespec_sub_ms(&now, &session->internals.dtls.last_retransmit) < TIMER_WINDOW) { gnutls_assert(); goto nb_timeout; @@ -264,7 +286,7 @@ unsigned int timeout; { timeout = TIMER_WINDOW; - diff = timespec_sub_ms(&now, &session->internals.dtls.handshake_start_time); + diff = _dtls_timespec_sub_ms(&now, &session->internals.dtls.handshake_start_time); if (diff >= session->internals.dtls.total_timeout_ms) { _gnutls_dtls_log("Session timeout: %u ms\n", diff); @@ -272,7 +294,7 @@ unsigned int timeout; goto end_flight; } - diff = timespec_sub_ms(&now, &session->internals.dtls.last_retransmit); + diff = _dtls_timespec_sub_ms(&now, &session->internals.dtls.last_retransmit); if (session->internals.dtls.flight_init == 0 || diff >= TIMER_WINDOW) { _gnutls_dtls_log ("DTLS[%p]: %sStart of flight transmission.\n", session, (session->internals.dtls.flight_init == 0)?"":"re-"); @@ -621,7 +643,7 @@ unsigned int diff; gettime(&now); - diff = timespec_sub_ms(&now, &session->internals.dtls.last_retransmit); + diff = _dtls_timespec_sub_ms(&now, &session->internals.dtls.last_retransmit); if (diff >= TIMER_WINDOW) return 0; else diff --git a/lib/gnutls_dtls.h b/lib/gnutls_dtls.h index 8ba67bf7b4..cd15f89643 100644 --- a/lib/gnutls_dtls.h +++ b/lib/gnutls_dtls.h @@ -37,19 +37,14 @@ void _dtls_reset_hsk_state(gnutls_session_t session); #define MAX_DTLS_TIMEOUT 60000 -/* returns a-b in ms */ -inline static unsigned int timespec_sub_ms(struct timespec *a, struct timespec *b) -{ - return (a->tv_sec * 1000 + a->tv_nsec / (1000 * 1000) - - (b->tv_sec * 1000 + b->tv_nsec / (1000 * 1000))); -} +unsigned int _dtls_timespec_sub_ms (struct timespec *a, struct timespec *b); #define RETURN_DTLS_EAGAIN_OR_TIMEOUT(session, r) { \ struct timespec now; \ unsigned int diff; \ gettime(&now); \ \ - diff = timespec_sub_ms(&now, &session->internals.dtls.handshake_start_time); \ + diff = _dtls_timespec_sub_ms(&now, &session->internals.dtls.handshake_start_time); \ if (diff > session->internals.dtls.total_timeout_ms) \ { \ _gnutls_dtls_log("Session timeout: %u ms\n", diff); \ @@ -97,18 +92,7 @@ inline static void _dtls_async_timer_init(gnutls_session_t session) } } -inline static void _dtls_async_timer_delete(gnutls_session_t session) -{ - if (session->internals.dtls.async_term != 0) - { - _gnutls_dtls_log ("DTLS[%p]: Deinitializing previous handshake state.\n", session); - session->internals.dtls.async_term = 0; /* turn off "timer" */ - - _dtls_reset_hsk_state(session); - _gnutls_handshake_io_buffer_clear (session); - _gnutls_epoch_gc(session); - } -} +void _dtls_async_timer_delete(gnutls_session_t session); /* Checks whether it is time to terminate the timer */