diff libfdcore/cnxctx.c @ 803:d5a4b5e175c2

Add timeout in gnutls_handshake for version 3.1.x
author Sebastien Decugis <sdecugis@nict.go.jp>
date Wed, 22 Aug 2012 00:18:15 +0200
parents c47c16436f71
children 09f8f0c4f4a4
line wrap: on
line diff
--- 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),
"Welcome to our mercurial repository"