1
0
mirror of https://github.com/Mbed-TLS/mbedtls.git synced 2025-07-28 00:21:48 +03:00

Add ssl_set_handshake_timeout()

This commit is contained in:
Manuel Pégourié-Gonnard
2014-10-01 12:03:55 +02:00
committed by Paul Bakker
parent 0ac247fd88
commit 905dd2425c
2 changed files with 44 additions and 5 deletions

View File

@ -117,16 +117,16 @@ static int ssl_double_retransmit_timeout( ssl_context *ssl )
{
uint32_t new_timeout;
if( ssl->handshake->retransmit_timeout >= SSL_DTLS_TIMEOUT_DFL_MAX )
if( ssl->handshake->retransmit_timeout >= ssl->hs_timeout_max )
return( -1 );
new_timeout = 2 * ssl->handshake->retransmit_timeout;
/* Avoid arithmetic overflow and range overflow */
if( new_timeout < ssl->handshake->retransmit_timeout ||
new_timeout > SSL_DTLS_TIMEOUT_DFL_MAX )
new_timeout > ssl->hs_timeout_max )
{
new_timeout = SSL_DTLS_TIMEOUT_DFL_MAX;
new_timeout = ssl->hs_timeout_max;
}
ssl->handshake->retransmit_timeout = new_timeout;
@ -138,7 +138,7 @@ static int ssl_double_retransmit_timeout( ssl_context *ssl )
static void ssl_reset_retransmit_timeout( ssl_context *ssl )
{
ssl->handshake->retransmit_timeout = SSL_DTLS_TIMEOUT_DFL_MIN;
ssl->handshake->retransmit_timeout = ssl->hs_timeout_min;
SSL_DEBUG_MSG( 3, ( "update timeout value to %d millisecs",
ssl->handshake->retransmit_timeout ) );
}
@ -4535,7 +4535,7 @@ static int ssl_handshake_init( ssl_context *ssl )
#if defined(POLARSSL_SSL_PROTO_DTLS)
ssl->handshake->alt_transform_out = ssl->transform_out;
ssl->handshake->retransmit_timeout = SSL_DTLS_TIMEOUT_DFL_MIN;
ssl->handshake->retransmit_timeout = ssl->hs_timeout_min;
if( ssl->endpoint == SSL_IS_CLIENT )
ssl->handshake->retransmit_state = SSL_RETRANS_PREPARING;
@ -4647,6 +4647,11 @@ int ssl_init( ssl_context *ssl )
ssl->anti_replay = SSL_ANTI_REPLAY_ENABLED;
#endif
#if defined(POLARSSL_SSL_PROTO_DTLS)
ssl->hs_timeout_min = SSL_DTLS_TIMEOUT_DFL_MIN;
ssl->hs_timeout_max = SSL_DTLS_TIMEOUT_DFL_MAX;
#endif
if( ( ret = ssl_handshake_init( ssl ) ) != 0 )
return( ret );
@ -4871,6 +4876,14 @@ void ssl_set_dtls_anti_replay( ssl_context *ssl, char mode )
}
#endif
#if defined(POLARSSL_SSL_PROTO_DTLS)
void ssl_set_handshake_timeout( ssl_context *ssl, uint32_t min, uint32_t max )
{
ssl->hs_timeout_min = min;
ssl->hs_timeout_max = max;
}
#endif
void ssl_set_authmode( ssl_context *ssl, int authmode )
{
ssl->authmode = authmode;