From: Tim Kosse Date: Fri, 15 Jan 2016 13:45:42 +0000 (+0100) Subject: Reset extensions_sent_size only at start of handshake X-Git-Tag: gnutls_3_5_1~80 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=9ea294cb89d60a4393e9266ee0364d4cf0daa5c7;p=thirdparty%2Fgnutls.git 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 --- 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. */