summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2014-10-09 18:15:01 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2014-10-09 18:15:01 +0200
commit04c1a1ebdec16bb8af315a0dc3712d69b30e9880 (patch)
tree91168284431a99dcfdcea1cc9fc9abcea05d24d4
parent33f2eee26ad6d3d7818edc1b70680ddb5f3052be (diff)
downloadgnutls-04c1a1ebdec16bb8af315a0dc3712d69b30e9880.tar.gz
added internal variable to track handshake status
-rw-r--r--lib/gnutls_handshake.c1
-rw-r--r--lib/gnutls_int.h2
-rw-r--r--lib/gnutls_state.c1
3 files changed, 4 insertions, 0 deletions
diff --git a/lib/gnutls_handshake.c b/lib/gnutls_handshake.c
index 9ddcfbce3e..0d8b31225b 100644
--- a/lib/gnutls_handshake.c
+++ b/lib/gnutls_handshake.c
@@ -2535,6 +2535,7 @@ int gnutls_handshake(gnutls_session_t session)
session->internals.handshake_timeout_ms = 0;
}
+ session->internals.handshake_in_progress = 1;
gettime(&session->internals.dtls.handshake_start_time);
if (session->internals.handshake_timeout_ms &&
session->internals.handshake_endtime == 0)
diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h
index c6e541fe1e..d92be1aba0 100644
--- a/lib/gnutls_int.h
+++ b/lib/gnutls_int.h
@@ -967,6 +967,8 @@ typedef struct {
/* In case of clients that don't handle GNUTLS_E_LARGE_PACKET, don't
* force them into an infinite loop */
unsigned handshake_large_loops;
+ /* should be non-zero when a handshake is in progress */
+ bool handshake_in_progress;
/* if set it means that the master key was set using
* gnutls_session_set_master() rather than being negotiated. */
diff --git a/lib/gnutls_state.c b/lib/gnutls_state.c
index ee2cccbc7c..80b757e475 100644
--- a/lib/gnutls_state.c
+++ b/lib/gnutls_state.c
@@ -275,6 +275,7 @@ void _gnutls_handshake_internal_state_clear(gnutls_session_t session)
_gnutls_epoch_gc(session);
session->internals.handshake_endtime = 0;
+ session->internals.handshake_in_progress = 0;
}
/**