]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
handshake: false start flag merged with hsk_flags
authorNikos Mavrogiannopoulos <nmav@redhat.com>
Tue, 7 Nov 2017 15:09:12 +0000 (16:09 +0100)
committerNikos Mavrogiannopoulos <nmav@redhat.com>
Mon, 19 Feb 2018 14:29:36 +0000 (15:29 +0100)
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
lib/gnutls_int.h
lib/handshake.c
lib/state.c

index 68ca48dcc32b7bebd36ba921f8073c2ec7391018..750da73ad6074e8bed801978589197d1be20f30c 100644 (file)
@@ -1145,6 +1145,7 @@ typedef struct {
 #define HSK_CRT_REQ_SENT (1<<5)
 #define HSK_CRT_REQ_GOT_SIG_ALGO (1<<6)
 #define HSK_KEY_UPDATE_ASKED (1<<7) /* flag is not used during handshake */
+#define HSK_FALSE_START_USED (1<<8) /* TLS1.2 only */
        unsigned hsk_flags;
        time_t last_key_update;
 
@@ -1195,8 +1196,6 @@ typedef struct {
        char saved_username[MAX_USERNAME_SIZE+1];
        bool saved_username_set;
 
-       bool false_start_used; /* non-zero if false start was used for appdata */
-
        /* Needed for TCP Fast Open (TFO), set by gnutls_transport_set_fastopen() */
        tfo_st tfo;
 
index 559e115528563017ce7c892db7f48bdf32e72ae8..d1a249f30b7d7eea9a43bd83a4d1ecb9d0aca9ad 100644 (file)
@@ -2726,7 +2726,7 @@ static int handshake_client(gnutls_session_t session)
        case STATE17:
                STATE = STATE17;
                if (session->internals.resumed == RESUME_FALSE && (session->internals.flags & GNUTLS_ENABLE_FALSE_START) && can_send_false_start(session)) {
-                       session->internals.false_start_used = 1;
+                       session->internals.hsk_flags |= HSK_FALSE_START_USED;
                        session->internals.recv_state = RECV_STATE_FALSE_START;
                        /* complete this phase of the handshake. We
                         * should be called again by gnutls_record_recv()
@@ -2735,8 +2735,6 @@ static int handshake_client(gnutls_session_t session)
                        gnutls_assert();
 
                        return 0;
-               } else {
-                       session->internals.false_start_used = 0;
                }
                /* fall through */
        case STATE18:
index 09fd4784943ce60db05d5288f32b4b4ee265eede..8bd81b8c48ad09d99d8bc3f9292c8c41927d0af9 100644 (file)
@@ -1294,7 +1294,7 @@ unsigned gnutls_session_get_flags(gnutls_session_t session)
                flags |= GNUTLS_SFLAGS_HB_LOCAL_SEND;
        if (gnutls_heartbeat_allowed(session, GNUTLS_HB_PEER_ALLOWED_TO_SEND))
                flags |= GNUTLS_SFLAGS_HB_PEER_SEND;
-       if (session->internals.false_start_used)
+       if (session->internals.hsk_flags & HSK_FALSE_START_USED)
                flags |= GNUTLS_SFLAGS_FALSE_START;
        if (session->internals.used_ffdhe)
                flags |= GNUTLS_SFLAGS_RFC7919;