gfe-relnote: Call SetDefaultEncryptionLevel after setting crypto_negotiated_params in TlsServerHandshaker and TlsClientHandshaker. Protected by disabled QUIC versions.
Also add a QUIC_BUG in QuicSession::SetDefaultEncryptionLevel to check this condition.
This fixes a DCHECK failure in chrome in which the handshake completes, but GetSSLInfo fails because the cipher suite is not yet set.
https://bugs.chromium.org/p/chromium/issues/detail?id=1032263
PiperOrigin-RevId: 286011546
Change-Id: Ie9e03fa5cf6e3c346181435d45f362de10dc7083
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc
index 9a0bae6..74dc15d 100644
--- a/quic/core/quic_session.cc
+++ b/quic/core/quic_session.cc
@@ -1357,6 +1357,11 @@
case ENCRYPTION_HANDSHAKE:
break;
case ENCRYPTION_FORWARD_SECURE:
+ if (connection_->version().handshake_protocol == PROTOCOL_TLS1_3) {
+ QUIC_BUG_IF(!GetCryptoStream()->crypto_negotiated_params().cipher_suite)
+ << ENDPOINT
+ << "Handshake confirmed without cipher suite negotiation.";
+ }
QUIC_BUG_IF(!config_.negotiated())
<< ENDPOINT << "Handshake confirmed without parameter negotiation.";
break;