Fix a bug in and test the message callback.
reuse_message and V2ClientHellos each caused messages to be
double-reported.
Change-Id: I8722a3761ede272408ac9cf8e1b2ce383911cc6f
Reviewed-on: https://boringssl-review.googlesource.com/18764
Reviewed-by: Steven Valdez <svaldez@google.com>
Commit-Queue: Steven Valdez <svaldez@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/ssl/d1_both.cc b/ssl/d1_both.cc
index f019bae..3ac21c3 100644
--- a/ssl/d1_both.cc
+++ b/ssl/d1_both.cc
@@ -442,14 +442,16 @@
assert(frag->reassembly == NULL);
assert(ssl->d1->handshake_read_seq == frag->seq);
+ if (ssl->init_msg == NULL) {
+ ssl_do_msg_callback(ssl, 0 /* read */, SSL3_RT_HANDSHAKE, frag->data,
+ frag->msg_len + DTLS1_HM_HEADER_LENGTH);
+ }
+
/* TODO(davidben): This function has a lot of implicit outputs. Simplify the
* |ssl_get_message| API. */
ssl->s3->tmp.message_type = frag->type;
ssl->init_msg = frag->data + DTLS1_HM_HEADER_LENGTH;
ssl->init_num = frag->msg_len;
-
- ssl_do_msg_callback(ssl, 0 /* read */, SSL3_RT_HANDSHAKE, frag->data,
- ssl->init_num + DTLS1_HM_HEADER_LENGTH);
return 1;
}