gfe-relnote: Let QUIC client drops initial key when a handshake packet has been sent. protected by existing gfe2_reloadable_flag_quic_enable_version_draft_25_v3 and gfe2_reloadable_flag_quic_enable_version_draft_27.
PiperOrigin-RevId: 308882771
Change-Id: Icbae03467ebc7845dacb8d6398cd2657dcf11632
diff --git a/quic/core/tls_client_handshaker.cc b/quic/core/tls_client_handshaker.cc
index 3770ebd..9379087 100644
--- a/quic/core/tls_client_handshaker.cc
+++ b/quic/core/tls_client_handshaker.cc
@@ -296,6 +296,15 @@
OnHandshakeConfirmed();
}
+void TlsClientHandshaker::OnHandshakePacketSent() {
+ if (initial_keys_dropped_) {
+ return;
+ }
+ handshaker_delegate()->DiscardOldEncryptionKey(ENCRYPTION_INITIAL);
+ handshaker_delegate()->DiscardOldDecryptionKey(ENCRYPTION_INITIAL);
+ initial_keys_dropped_ = true;
+}
+
void TlsClientHandshaker::OnHandshakeDoneReceived() {
if (!one_rtt_keys_available_) {
CloseConnection(QUIC_HANDSHAKE_FAILED,
@@ -529,8 +538,6 @@
if (level == ENCRYPTION_HANDSHAKE &&
state_ < STATE_ENCRYPTION_HANDSHAKE_DATA_SENT) {
state_ = STATE_ENCRYPTION_HANDSHAKE_DATA_SENT;
- handshaker_delegate()->DiscardOldEncryptionKey(ENCRYPTION_INITIAL);
- handshaker_delegate()->DiscardOldDecryptionKey(ENCRYPTION_INITIAL);
}
TlsHandshaker::WriteMessage(level, data);
}