提交 7f9f5f71 编写于 作者: M Matt Caswell

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: NRich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5874)
上级 c2c1d8a4
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册