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();
 }