diff options
author | Tim Kosse <tim.kosse@filezilla-project.org> | 2016-01-15 14:45:42 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-05-30 14:06:50 +0200 |
commit | 9ea294cb89d60a4393e9266ee0364d4cf0daa5c7 (patch) | |
tree | ae9ba84470242d107e4615e3f4b7ba97092f9a1d | |
parent | 1eb8b3dcc6c790db88889d67dc23f65aa75341d2 (diff) | |
download | gnutls-9ea294cb89d60a4393e9266ee0364d4cf0daa5c7.tar.gz |
Reset extensions_sent_size only at start of handshake
That is, do not reset it when completing it so that we can
use the negotiated extensions even after the handshake is
complete.
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
-rw-r--r-- | lib/extensions.c | 5 | ||||
-rw-r--r-- | lib/handshake.c | 1 | ||||
-rw-r--r-- | lib/state.c | 4 |
3 files changed, 6 insertions, 4 deletions
diff --git a/lib/extensions.c b/lib/extensions.c index 185fd14c73..905baf8328 100644 --- a/lib/extensions.c +++ b/lib/extensions.c @@ -157,8 +157,9 @@ const char *gnutls_ext_get_name(unsigned int ext) return NULL; } -/* Checks if the extension we just received is one of the - * requested ones. Otherwise it's a fatal error. +/* Checks if the extension @type provided has been requested + * by us (in client side). In that case it returns zero, + * otherwise a negative error value. */ int _gnutls_extension_list_check(gnutls_session_t session, uint16_t type) diff --git a/lib/handshake.c b/lib/handshake.c index 965698e3ca..7dccae6030 100644 --- a/lib/handshake.c +++ b/lib/handshake.c @@ -2563,6 +2563,7 @@ int gnutls_handshake(gnutls_session_t session) if (session->internals.priorities.protocol.algorithms == 0) return gnutls_assert_val(GNUTLS_E_NO_PRIORITIES_WERE_SET); + session->internals.extensions_sent_size = 0; session->internals.handshake_in_progress = 1; session->internals.vc_status = -1; gettime(&session->internals.handshake_start_time); diff --git a/lib/state.c b/lib/state.c index 6527695067..f96f43319b 100644 --- a/lib/state.c +++ b/lib/state.c @@ -274,8 +274,6 @@ inline static void deinit_internal_params(gnutls_session_t session) */ static void _gnutls_handshake_internal_state_init(gnutls_session_t session) { - session->internals.extensions_sent_size = 0; - /* by default no selected certificate */ session->internals.adv_version_major = 0; session->internals.adv_version_minor = 0; @@ -392,6 +390,8 @@ int gnutls_init(gnutls_session_t * session, unsigned int flags) _gnutls_handshake_internal_state_init(*session); + (*session)->internals.extensions_sent_size = 0; + /* emulate old gnutls behavior for old applications that do not use the priority_* * functions. */ |