Simplify QuicConnection::ShouldEnqueueUnDecryptablePacket.

This is a no-op simplification, the cases when decryption_level <= encryption_level_:
- Initial: always drop because we no longer have the keys.
- Handshake: always buffer until handshake is confirmed.
- ZeroRTT: always buffer on server until handshake is confirmed.

If there's a case I'm not thinking of, we should probably add a test for it.

PiperOrigin-RevId: 382276435
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 3b3069b..462dac9 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -2800,18 +2800,16 @@
     return false;
   }
   if (version().KnowsWhichDecrypterToUse() &&
-      decryption_level <= encryption_level_) {
-    if (decryption_level == ENCRYPTION_HANDSHAKE &&
-        encryption_level_ == ENCRYPTION_ZERO_RTT) {
-      // This is cient side only since only clients have
-      // encryption_level_ == ENCRYPTION_ZERO_RTT.
-      QUICHE_DCHECK_EQ(Perspective::IS_CLIENT, perspective_);
-      // Make sure we enqueue undecryptable HANDSHAKE packets when the
-      // encryption level is 0-RTT and we have not install HANDSHAKE key yet.
-      return true;
-    }
-    // On versions that know which decrypter to use, we install keys in order
-    // so we will not get newer keys for lower encryption levels.
+      decryption_level == ENCRYPTION_INITIAL) {
+    // When the corresponding decryption key is not available, all
+    // non-Initial packets should be buffered until the handshake is complete.
+    return false;
+  }
+  if (perspective_ == Perspective::IS_CLIENT && version().UsesTls() &&
+      decryption_level == ENCRYPTION_ZERO_RTT) {
+    // Only clients send Zero RTT packets in IETF QUIC.
+    QUIC_PEER_BUG(quic_peer_bug_client_received_zero_rtt)
+        << "Client received a Zero RTT packet, not buffering.";
     return false;
   }
   return true;