Commit 7f9f5f71 authored by Matt Caswell's avatar Matt Caswell
Browse files

Make sure info callback knows about all handshake start events



The first session ticket sent by the server is actually tacked onto the
end of the first handshake from a state machine perspective. However in
reality this is a post-handshake message, and should be preceeded by a
handshake start event from an info callback perspective.

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5874)
parent c2c1d8a4
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -3716,6 +3716,23 @@ int tls_construct_new_session_ticket(SSL *s, WPACKET *pkt)
    } age_add_u;

    if (SSL_IS_TLS13(s)) {
        if (s->post_handshake_auth != SSL_PHA_EXT_RECEIVED) {
            void (*cb) (const SSL *ssl, int type, int val) = NULL;

            /*
             * This is the first session ticket we've sent. In the state
             * machine we "cheated" and tacked this onto the end of the first
             * handshake. From an info callback perspective this should appear
             * like the start of a new handshake.
             */
            if (s->info_callback != NULL)
                cb = s->info_callback;
            else if (s->ctx->info_callback != NULL)
                cb = s->ctx->info_callback;
            if (cb != NULL)
                cb(s, SSL_CB_HANDSHAKE_START, 1);
        }

        if (!ssl_generate_session_id(s, s->session)) {
            /* SSLfatal() already called */
            goto err;