Don't report ChangeCipherSpec through the message callback in QUIC
Reporting it doesn't make much sense when QUIC doesn't send
ChangeCipherSpec in the first place.
Change-Id: I34af531eb14a37a0aa90da447146d5290db24494
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/73727
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: Nick Harper <nharper@chromium.org>
diff --git a/ssl/s3_both.cc b/ssl/s3_both.cc
index 82671c0..6d6b357 100644
--- a/ssl/s3_both.cc
+++ b/ssl/s3_both.cc
@@ -263,13 +263,12 @@
}
bool tls_add_change_cipher_spec(SSL *ssl) {
- static const uint8_t kChangeCipherSpec[1] = {SSL3_MT_CCS};
-
- if (!tls_flush_pending_hs_data(ssl)) {
- return false;
+ if (SSL_is_quic(ssl)) {
+ return true;
}
- if (!SSL_is_quic(ssl) &&
+ static const uint8_t kChangeCipherSpec[1] = {SSL3_MT_CCS};
+ if (!tls_flush_pending_hs_data(ssl) ||
!add_record_to_flight(ssl, SSL3_RT_CHANGE_CIPHER_SPEC,
kChangeCipherSpec)) {
return false;
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go
index 7173f92..f6b545a 100644
--- a/ssl/test/runner/runner.go
+++ b/ssl/test/runner/runner.go
@@ -18875,7 +18875,10 @@
// Test the message callback is correctly reported with ECH.
clientAndServerHello := "read hs 1\nread clienthelloinner\nwrite hs 2\n"
- expectMsgCallback := clientAndServerHello + "write ccs\n"
+ expectMsgCallback := clientAndServerHello
+ if protocol == tls {
+ expectMsgCallback += "write ccs\n"
+ }
if hrr {
expectMsgCallback += clientAndServerHello
}
@@ -20744,6 +20747,10 @@
// Test the message callback is correctly reported, with and without
// HelloRetryRequest.
clientAndServerHello := "write clienthelloinner\nwrite hs 1\nread hs 2\n"
+ clientAndServerHelloInitial := clientAndServerHello
+ if protocol == tls {
+ clientAndServerHelloInitial += "write ccs\n"
+ }
// EncryptedExtensions onwards.
finishHandshake := `read hs 8
read hs 11
@@ -20768,7 +20775,7 @@
flags: []string{
"-ech-config-list", base64FlagValue(CreateECHConfigList(echConfig.ECHConfig.Raw)),
"-expect-ech-accept",
- "-expect-msg-callback", clientAndServerHello + "write ccs\n" + finishHandshake,
+ "-expect-msg-callback", clientAndServerHelloInitial + finishHandshake,
},
expectations: connectionExpectations{echAccepted: true},
})
@@ -20790,7 +20797,7 @@
"-ech-config-list", base64FlagValue(CreateECHConfigList(echConfig.ECHConfig.Raw)),
"-expect-ech-accept",
"-expect-hrr", // Check we triggered HRR.
- "-expect-msg-callback", clientAndServerHello + "write ccs\n" + clientAndServerHello + finishHandshake,
+ "-expect-msg-callback", clientAndServerHelloInitial + clientAndServerHello + finishHandshake,
},
expectations: connectionExpectations{echAccepted: true},
})