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/tls_client_handshaker.cc b/quic/core/tls_client_handshaker.cc index b027004..5d9ffd4 100644 --- a/quic/core/tls_client_handshaker.cc +++ b/quic/core/tls_client_handshaker.cc
@@ -337,7 +337,6 @@ encryption_established_ = true; handshake_confirmed_ = true; - delegate()->SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE); // Fill crypto_negotiated_params_: const SSL_CIPHER* cipher = SSL_get_current_cipher(ssl()); @@ -347,6 +346,8 @@ crypto_negotiated_params_->key_exchange_group = SSL_get_curve_id(ssl()); crypto_negotiated_params_->peer_signature_algorithm = SSL_get_peer_signature_algorithm(ssl()); + + delegate()->SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE); // TODO(fayang): Replace this with DiscardOldKeys(ENCRYPTION_HANDSHAKE) when // handshake key discarding settles down. delegate()->NeuterHandshakeData();