Neuter CRYPTO data in HANDSHAKE level when discarding handshake keys. Protected by gfe2_reloadable_flag_quic_fix_neuter_handshake_data.
This is used to fix a corner case where HANDSHAKE data is marked as lost, but handshake key is discarded before it gets retransmitted.
PiperOrigin-RevId: 324676804
Change-Id: I049458e51bdbb8c36892fafb11ec1ba71ba9dece
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc
index 5b825ed..6379861 100644
--- a/quic/core/quic_session.cc
+++ b/quic/core/quic_session.cc
@@ -1633,6 +1633,11 @@
}
void QuicSession::NeuterHandshakeData() {
+ if (GetQuicReloadableFlag(quic_fix_neuter_handshake_data)) {
+ QUIC_RELOADABLE_FLAG_COUNT(quic_fix_neuter_handshake_data);
+ GetMutableCryptoStream()->NeuterStreamDataOfEncryptionLevel(
+ ENCRYPTION_HANDSHAKE);
+ }
connection()->OnHandshakeComplete();
}