Move has_message logic to ssl3_get_message.

This doesn't particularly matter but is more consistent with DTLS and
avoids the callback being potentially called from two places.

Change-Id: I2f57ca94d2d532c56f37a0bac7000c15b3b4b520
Reviewed-on: https://boringssl-review.googlesource.com/21344
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
Reviewed-by: Steven Valdez <svaldez@google.com>
diff --git a/ssl/d1_both.cc b/ssl/d1_both.cc
index 66f59a4..24bd915 100644
--- a/ssl/d1_both.cc
+++ b/ssl/d1_both.cc
@@ -433,9 +433,7 @@
   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 d63d133..28eebdd 100644
--- a/ssl/s3_both.cc
+++ b/ssl/s3_both.cc
@@ -525,6 +525,14 @@
   CBS_init(&out->raw, reinterpret_cast<const uint8_t *>(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 @@
   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;