# HG changeset patch # User Sebastien Decugis # Date 1345587495 -7200 # Node ID d5a4b5e175c28ec55e47fcb72c3f0159dcc1c254 # Parent 6dde862ba119f2767be5e6ff52c4853de7a2c90a Add timeout in gnutls_handshake for version 3.1.x diff -r 6dde862ba119 -r d5a4b5e175c2 extensions/app_diameap/diameap_tls.c --- a/extensions/app_diameap/diameap_tls.c Wed Aug 22 00:16:25 2012 +0200 +++ b/extensions/app_diameap/diameap_tls.c Wed Aug 22 00:18:15 2012 +0200 @@ -455,6 +455,10 @@ int ret; data->p_length = data->tlsResp.datalength; + #ifdef GNUTLS_VERSION_310 + gnutls_handshake_set_timeout( data->session, GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT); + #endif /* GNUTLS_VERSION_310 */ + ret = gnutls_handshake(data->session); if (ret < 0) diff -r 6dde862ba119 -r d5a4b5e175c2 libfdcore/cnxctx.c --- a/libfdcore/cnxctx.c Wed Aug 22 00:16:25 2012 +0200 +++ b/libfdcore/cnxctx.c Wed Aug 22 00:18:15 2012 +0200 @@ -841,7 +841,10 @@ { switch (ret) { case GNUTLS_E_REHANDSHAKE: - if (!fd_cnx_teststate(conn, CC_STATUS_CLOSING)) + if (!fd_cnx_teststate(conn, CC_STATUS_CLOSING)) { + #ifdef GNUTLS_VERSION_310 + GNUTLS_TRACE( gnutls_handshake_set_timeout( session, GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT)); + #endif /* GNUTLS_VERSION_310 */ CHECK_GNUTLS_DO( ret = gnutls_handshake(session), { if (TRACE_BOOL(INFO)) { @@ -849,6 +852,7 @@ } goto end; } ); + } case GNUTLS_E_AGAIN: case GNUTLS_E_INTERRUPTED: @@ -885,7 +889,11 @@ { switch (ret) { case GNUTLS_E_REHANDSHAKE: - if (!fd_cnx_teststate(conn, CC_STATUS_CLOSING)) + if (!fd_cnx_teststate(conn, CC_STATUS_CLOSING)) { + #ifdef GNUTLS_VERSION_310 + GNUTLS_TRACE( gnutls_handshake_set_timeout( session, GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT)); + #endif /* GNUTLS_VERSION_310 */ + CHECK_GNUTLS_DO( ret = gnutls_handshake(session), { if (TRACE_BOOL(INFO)) { @@ -893,6 +901,7 @@ } goto end; } ); + } case GNUTLS_E_AGAIN: case GNUTLS_E_INTERRUPTED: @@ -1286,7 +1295,10 @@ /* Handshake master session */ { int ret; - + #ifdef GNUTLS_VERSION_310 + GNUTLS_TRACE( gnutls_handshake_set_timeout( conn->cc_tls_para.session, GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT)); + #endif /* GNUTLS_VERSION_310 */ + /* When gnutls 2.10.1 is around, we should use gnutls_certificate_set_verify_function and fd_tls_verify_credentials, so that handshake fails directly. */ CHECK_GNUTLS_DO( ret = gnutls_handshake(conn->cc_tls_para.session), diff -r 6dde862ba119 -r d5a4b5e175c2 libfdcore/sctps.c --- a/libfdcore/sctps.c Wed Aug 22 00:16:25 2012 +0200 +++ b/libfdcore/sctps.c Wed Aug 22 00:18:15 2012 +0200 @@ -462,6 +462,9 @@ } TRACE_DEBUG(FULL, "Starting TLS resumed handshake on stream %hu", ctx->strid); +#ifdef GNUTLS_VERSION_310 + GNUTLS_TRACE( gnutls_handshake_set_timeout( ctx->session, GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT)); +#endif /* GNUTLS_VERSION_310 */ CHECK_GNUTLS_DO( gnutls_handshake( ctx->session ), return NULL); GNUTLS_TRACE( resumed = gnutls_session_is_resumed(ctx->session) );