diff --git a/ssl/d1_both.cc b/ssl/d1_both.cc index 66f59a46..24bd9157 100644 --- a/ssl/d1_both.cc +++ b/ssl/d1_both.cc @@ -433,9 +433,7 @@ bool dtls1_get_message(SSL *ssl, SSLMessage *out) { CBS_init(&out->raw, frag->data, DTLS1_HM_HEADER_LENGTH + frag->msg_len); out->is_v2_hello = false; if (!ssl->s3->has_message) { - ssl_do_msg_callback( - ssl, 0 /* read */, SSL3_RT_HANDSHAKE, - MakeSpan(frag->data, frag->msg_len + DTLS1_HM_HEADER_LENGTH)); + ssl_do_msg_callback(ssl, 0 /* read */, SSL3_RT_HANDSHAKE, out->raw); ssl->s3->has_message = true; } return true; diff --git a/ssl/s3_both.cc b/ssl/s3_both.cc index d63d1334..28eebdd4 100644 --- a/ssl/s3_both.cc +++ b/ssl/s3_both.cc @@ -525,6 +525,14 @@ static bool parse_message(SSL *ssl, SSLMessage *out, size_t *out_bytes_needed) { CBS_init(&out->raw, reinterpret_cast(ssl->init_buf->data), 4 + len); out->is_v2_hello = ssl->s3->is_v2_hello; + return true; +} + +bool ssl3_get_message(SSL *ssl, SSLMessage *out) { + size_t unused; + if (!parse_message(ssl, out, &unused)) { + return false; + } if (!ssl->s3->has_message) { if (!out->is_v2_hello) { ssl_do_msg_callback(ssl, 0 /* read */, SSL3_RT_HANDSHAKE, out->raw); @@ -534,11 +542,6 @@ static bool parse_message(SSL *ssl, SSLMessage *out, size_t *out_bytes_needed) { return true; } -bool ssl3_get_message(SSL *ssl, SSLMessage *out) { - size_t unused; - return parse_message(ssl, out, &unused); -} - int ssl3_read_message(SSL *ssl) { SSLMessage msg; size_t bytes_needed;