diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 6b694a0..fc72c59 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -3416,6 +3416,11 @@
       encryption_level_ == ENCRYPTION_INITIAL) {
     return;
   }
+  const bool fix_undecryptable_packets =
+      GetQuicReloadableFlag(quic_fix_undecryptable_packets2);
+  if (fix_undecryptable_packets) {
+    QUIC_RELOADABLE_FLAG_COUNT(quic_fix_undecryptable_packets2);
+  }
 
   auto iter = undecryptable_packets_.begin();
   while (connected_ && iter != undecryptable_packets_.end()) {
@@ -3426,9 +3431,11 @@
       return;
     }
     UndecryptablePacket* undecryptable_packet = &*iter;
-    ++iter;
-    if (undecryptable_packet->processed) {
-      continue;
+    if (!fix_undecryptable_packets) {
+      ++iter;
+      if (undecryptable_packet->processed) {
+        continue;
+      }
     }
     QUIC_DVLOG(1) << ENDPOINT << "Attempting to process undecryptable packet";
     if (debug_visitor_ != nullptr) {
@@ -3437,7 +3444,11 @@
     }
     if (framer_.ProcessPacket(*undecryptable_packet->packet)) {
       QUIC_DVLOG(1) << ENDPOINT << "Processed undecryptable packet!";
-      undecryptable_packet->processed = true;
+      if (fix_undecryptable_packets) {
+        iter = undecryptable_packets_.erase(iter);
+      } else {
+        undecryptable_packet->processed = true;
+      }
       ++stats_.packets_processed;
       continue;
     }
@@ -3450,14 +3461,21 @@
       QUIC_DVLOG(1)
           << ENDPOINT
           << "Need to attempt to process this undecryptable packet later";
+      if (fix_undecryptable_packets) {
+        ++iter;
+      }
       continue;
     }
-    undecryptable_packet->processed = true;
+    if (fix_undecryptable_packets) {
+      iter = undecryptable_packets_.erase(iter);
+    } else {
+      undecryptable_packet->processed = true;
+    }
   }
   // Remove processed packets. We cannot remove elements in the while loop
   // above because currently QuicCircularDeque does not support removing
   // mid elements.
-  while (!undecryptable_packets_.empty()) {
+  while (!fix_undecryptable_packets && !undecryptable_packets_.empty()) {
     if (!undecryptable_packets_.front().processed) {
       break;
     }
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index f748e9c..dcd655b 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -1149,6 +1149,8 @@
     // This gets set to true if 1) connection sucessfully processed the packet
     // or 2) connection failed to process the packet and will not try to process
     // it later.
+    // TODO(fayang): Remove this when deprecating
+    // quic_fix_undecryptable_packets2.
     bool processed;
   };
 
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index 7b9ece2..fdc4d7a 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -10934,7 +10934,11 @@
   // Verify all ENCRYPTION_HANDSHAKE packets get processed.
   EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(6);
   connection_.GetProcessUndecryptablePacketsAlarm()->Fire();
-  EXPECT_EQ(4u, QuicConnectionPeer::NumUndecryptablePackets(&connection_));
+  if (GetQuicReloadableFlag(quic_fix_undecryptable_packets2)) {
+    EXPECT_EQ(1u, QuicConnectionPeer::NumUndecryptablePackets(&connection_));
+  } else {
+    EXPECT_EQ(4u, QuicConnectionPeer::NumUndecryptablePackets(&connection_));
+  }
 
   SetDecrypter(ENCRYPTION_FORWARD_SECURE,
                std::make_unique<StrictTaggingDecrypter>(0x02));
