Deprecate gfe2_reloadable_flag_quic_fix_missing_initial_keys2.

PiperOrigin-RevId: 346103987
Change-Id: I9850a26dad6de632cb7b0f36ae0358e5b4d977c0
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index b6cff48..5d90546 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -2636,9 +2636,6 @@
 
 void QuicConnection::NeuterUnencryptedPackets() {
   sent_packet_manager_.NeuterUnencryptedPackets();
-  if (!fix_missing_initial_keys_ && version().CanSendCoalescedPackets()) {
-    coalesced_packet_.NeuterInitialPacket();
-  }
   // This may have changed the retransmission timer, so re-arm it.
   SetRetransmissionAlarm();
   if (default_enable_5rto_blackhole_detection_) {
@@ -2865,19 +2862,6 @@
           // Failed to flush coalesced packet, write error has been handled.
           return false;
         }
-        if (!fix_missing_initial_keys_ &&
-            GetQuicReloadableFlag(
-                quic_discard_initial_packet_with_key_dropped)) {
-          QUIC_RELOADABLE_FLAG_COUNT(
-              quic_discard_initial_packet_with_key_dropped);
-          if (packet->encryption_level == ENCRYPTION_INITIAL &&
-              !framer_.HasEncrypterOfEncryptionLevel(ENCRYPTION_INITIAL)) {
-            // Discard initial packet since flush of coalesce packet could
-            // cause initial keys to be dropped.
-            ++stats_.packets_discarded;
-            return true;
-          }
-        }
         if (!coalesced_packet_.MaybeCoalescePacket(
                 *packet, self_address(), send_to_address,
                 helper_->GetStreamSendBufferAllocator(),
@@ -4235,9 +4219,7 @@
       connection_->FlushCoalescedPacket();
     }
     connection_->FlushPackets();
-    if (connection_->fix_missing_initial_keys_ && !handshake_packet_sent_ &&
-        connection_->handshake_packet_sent_) {
-      QUIC_RELOADABLE_FLAG_COUNT_N(quic_fix_missing_initial_keys2, 1, 2);
+    if (!handshake_packet_sent_ && connection_->handshake_packet_sent_) {
       // This would cause INITIAL key to be dropped. Drop keys here to avoid
       // missing the write keys in the middle of writing.
       connection_->visitor_->OnHandshakePacketSent();
@@ -5049,17 +5031,14 @@
     QUIC_BUG_IF(coalesced_packet_.length() > 0);
     return true;
   }
-  if (fix_missing_initial_keys_) {
-    QUIC_RELOADABLE_FLAG_COUNT_N(quic_fix_missing_initial_keys2, 2, 2);
-    if (coalesced_packet_.ContainsPacketOfEncryptionLevel(ENCRYPTION_INITIAL) &&
-        !framer_.HasEncrypterOfEncryptionLevel(ENCRYPTION_INITIAL)) {
-      // Initial packet will be re-serialized. Neuter it in case initial key has
-      // been dropped.
-      QUIC_BUG << ENDPOINT
-               << "Coalescer contains initial packet while initial key has "
-                  "been dropped.";
-      coalesced_packet_.NeuterInitialPacket();
-    }
+  if (coalesced_packet_.ContainsPacketOfEncryptionLevel(ENCRYPTION_INITIAL) &&
+      !framer_.HasEncrypterOfEncryptionLevel(ENCRYPTION_INITIAL)) {
+    // Initial packet will be re-serialized. Neuter it in case initial key has
+    // been dropped.
+    QUIC_BUG << ENDPOINT
+             << "Coalescer contains initial packet while initial key has "
+                "been dropped.";
+    coalesced_packet_.NeuterInitialPacket();
   }
   if (coalesced_packet_.length() == 0) {
     return true;
@@ -5083,13 +5062,6 @@
     if (debug_visitor_ != nullptr) {
       debug_visitor_->OnCoalescedPacketSent(coalesced_packet_, length);
     }
-    if (!fix_missing_initial_keys_ &&
-        coalesced_packet_.ContainsPacketOfEncryptionLevel(
-            ENCRYPTION_HANDSHAKE)) {
-      // This is only called in coalescer because all ENCRYPTION_HANDSHAKE
-      // packets go through the coalescer.
-      visitor_->OnHandshakePacketSent();
-    }
     return true;
   }
 
@@ -5113,12 +5085,6 @@
   if (debug_visitor_ != nullptr) {
     debug_visitor_->OnCoalescedPacketSent(coalesced_packet_, length);
   }
-  if (!fix_missing_initial_keys_ &&
-      coalesced_packet_.ContainsPacketOfEncryptionLevel(ENCRYPTION_HANDSHAKE)) {
-    // This is only called in coalescer because all ENCRYPTION_HANDSHAKE
-    // packets go through the coalescer.
-    visitor_->OnHandshakePacketSent();
-  }
   // Account for added padding.
   if (length > coalesced_packet_.length()) {
     size_t padding_size = length - coalesced_packet_.length();
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index c59b040..80c70eb 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -1959,9 +1959,6 @@
   // True after the first 1-RTT packet has successfully decrypted.
   bool have_decrypted_first_one_rtt_packet_ = false;
 
-  const bool fix_missing_initial_keys_ =
-      GetQuicReloadableFlag(quic_fix_missing_initial_keys2);
-
   const bool encrypted_control_frames_;
 
   const bool use_encryption_level_context_;
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index 6f35892..b68b519 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -9845,9 +9845,6 @@
                                ? QuicPacketNumber(3)
                                : QuicPacketNumber(4),
                            _, _));
-  if (!GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
-  }
   connection_.GetRetransmissionAlarm()->Fire();
   // Verify 1-RTT packet gets coalesced with handshake retransmission.
   EXPECT_EQ(0x01010101u, writer_->final_bytes_of_last_packet());
@@ -9869,9 +9866,6 @@
               OnPacketSent(_, _, handshake_retransmission + 1, _, _));
   EXPECT_CALL(*send_algorithm_,
               OnPacketSent(_, _, handshake_retransmission, _, _));
-  if (!GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
-  }
   connection_.GetRetransmissionAlarm()->Fire();
   // Verify 1-RTT packet gets coalesced with handshake retransmission.
   EXPECT_EQ(0x01010101u, writer_->final_bytes_of_last_packet());
@@ -10647,11 +10641,7 @@
   connection_.SetEncrypter(ENCRYPTION_HANDSHAKE,
                            std::make_unique<TaggingEncrypter>(0x02));
   connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE);
-  if (GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
-  } else {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(2);
-  }
+  EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
   connection_.SendCryptoDataWithString("foo", 0, ENCRYPTION_HANDSHAKE);
   // Verify PTO time does not change.
   EXPECT_EQ(expected_pto_time,
@@ -10690,11 +10680,7 @@
   // Receives packet 1000 in handshake data.
   ProcessCryptoPacketAtLevel(1000, ENCRYPTION_HANDSHAKE);
   EXPECT_TRUE(connection_.HasPendingAcks());
-  if (GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
-  } else {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(2);
-  }
+  EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
   connection_.SendCryptoDataWithString("foo", 0, ENCRYPTION_HANDSHAKE);
 
   // Receives packet 1001 in handshake data.
@@ -10757,11 +10743,7 @@
   connection_.SetEncrypter(ENCRYPTION_HANDSHAKE,
                            std::make_unique<TaggingEncrypter>(0x02));
   connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE);
-  if (GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
-  } else {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(3);
-  }
+  EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
   // Send HANDSHAKE 2 and 3.
   connection_.SendCryptoDataWithString("foo", 0, ENCRYPTION_HANDSHAKE);
   connection_.SendCryptoDataWithString("bar", 3, ENCRYPTION_HANDSHAKE);
@@ -10827,11 +10809,7 @@
   connection_.SetEncrypter(ENCRYPTION_HANDSHAKE,
                            std::make_unique<TaggingEncrypter>(0x02));
   connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE);
-  if (GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
-  } else {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(2);
-  }
+  EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
   std::string handshake_crypto_data(1024, 'a');
   connection_.SendCryptoDataWithString(handshake_crypto_data, 0,
                                        ENCRYPTION_HANDSHAKE);
@@ -10903,11 +10881,7 @@
                            std::make_unique<TaggingEncrypter>(0x02));
   connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE);
   // Verify HANDSHAKE packet is coalesced with INITIAL retransmission.
-  if (GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
-  } else {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(2);
-  }
+  EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
   std::string handshake_crypto_data(1024, 'a');
   connection_.SendCryptoDataWithString(handshake_crypto_data, 0,
                                        ENCRYPTION_HANDSHAKE);
@@ -11158,10 +11132,7 @@
 // Regression test for b/166255274
 TEST_P(QuicConnectionTest,
        ReserializeInitialPacketInCoalescerAfterDiscardingInitialKey) {
-  if (!connection_.version().CanSendCoalescedPackets() ||
-      !GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-    // Cannot set quic_fix_missing_initial_keys in the test since connection_ is
-    // created since the setup.
+  if (!connection_.version().CanSendCoalescedPackets()) {
     return;
   }
   use_tagging_decrypter();
@@ -11805,9 +11776,6 @@
   connection_.GetSendAlarm()->Set(clock_.ApproximateNow());
 
   // Fire ACK alarm.
-  if (!GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-    EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
-  }
   connection_.GetAckAlarm()->Fire();
   if (GetQuicReloadableFlag(quic_fix_pto_pending_timer_count)) {
     // Verify 1-RTT packet is coalesced with handshake packet.
@@ -11821,15 +11789,8 @@
   connection_.GetSendAlarm()->Fire();
 
   ASSERT_TRUE(connection_.GetRetransmissionAlarm()->IsSet());
-  if (GetQuicReloadableFlag(quic_fix_pto_pending_timer_count)) {
-    if (!GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-      EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
-    }
-  } else if (GetQuicReloadableFlag(quic_let_connection_handle_pings)) {
-    if (!GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
-      EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
-    }
-  } else {
+  if (!GetQuicReloadableFlag(quic_fix_pto_pending_timer_count) &&
+      !GetQuicReloadableFlag(quic_let_connection_handle_pings)) {
     EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(0);
     EXPECT_CALL(visitor_, SendPing()).WillOnce(Invoke([this]() {
       SendPing();
@@ -11855,8 +11816,7 @@
 
 // Regression test for b/168294218.
 TEST_P(QuicConnectionTest, CoalescerHandlesInitialKeyDiscard) {
-  if (!connection_.version().CanSendCoalescedPackets() ||
-      !GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
+  if (!connection_.version().CanSendCoalescedPackets()) {
     return;
   }
   SetQuicReloadableFlag(quic_discard_initial_packet_with_key_dropped, true);
@@ -11887,8 +11847,7 @@
 
 // Regresstion test for b/168294218
 TEST_P(QuicConnectionTest, ZeroRttRejectionAndMissingInitialKeys) {
-  if (!connection_.SupportsMultiplePacketNumberSpaces() ||
-      !GetQuicReloadableFlag(quic_fix_missing_initial_keys2)) {
+  if (!connection_.SupportsMultiplePacketNumberSpaces()) {
     return;
   }
   // Not defer send in response to packet.
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index cb4ec93..9eebe63 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -36,7 +36,6 @@
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_enable_server_on_wire_ping, false)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_encrypted_control_frames, false)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_extract_x509_subject_using_certificate_view, true)
-QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_missing_initial_keys2, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_pto_pending_timer_count, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_undecryptable_packets2, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_willing_and_able_to_write2, true)