Deprecate gfe2_reloadable_flag_quic_fix_undecryptable_packets. PiperOrigin-RevId: 324608312 Change-Id: Ibee323f6c6bd5d49a59abe0249745b9a36820dfc
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc index 1bb6f1c..7bc2a0d 100644 --- a/quic/core/http/end_to_end_test.cc +++ b/quic/core/http/end_to_end_test.cc
@@ -199,7 +199,6 @@ AddToCache("/foo", 200, kFooResponseBody); AddToCache("/bar", 200, kBarResponseBody); // Enable fixes for bugs found in tests and prod. - SetQuicReloadableFlag(quic_fix_undecryptable_packets, true); SetQuicReloadableFlag(quic_fix_packet_number_length, true); SetQuicReloadableFlag(quic_support_handshake_done_in_t050, true);
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index ff909e9..9e2f885 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -3273,79 +3273,51 @@ return; } - if (GetQuicReloadableFlag(quic_fix_undecryptable_packets)) { - QUIC_RELOADABLE_FLAG_COUNT(quic_fix_undecryptable_packets); - auto iter = undecryptable_packets_.begin(); - while (connected_ && iter != undecryptable_packets_.end()) { - // Making sure there is no pending frames when processing next undecrypted - // packet because the queued ack frame may change. - packet_creator_.FlushCurrentPacket(); - if (!connected_) { - return; - } - UndecryptablePacket* undecryptable_packet = &*iter; - ++iter; - if (undecryptable_packet->processed) { - continue; - } - QUIC_DVLOG(1) << ENDPOINT << "Attempting to process undecryptable packet"; - if (debug_visitor_ != nullptr) { - debug_visitor_->OnAttemptingToProcessUndecryptablePacket( - undecryptable_packet->encryption_level); - } - if (framer_.ProcessPacket(*undecryptable_packet->packet)) { - QUIC_DVLOG(1) << ENDPOINT << "Processed undecryptable packet!"; - undecryptable_packet->processed = true; - ++stats_.packets_processed; - continue; - } - const bool has_decryption_key = - version().KnowsWhichDecrypterToUse() && - framer_.HasDecrypterOfEncryptionLevel( - undecryptable_packet->encryption_level); - if (framer_.error() == QUIC_DECRYPTION_FAILURE && - ShouldEnqueueUnDecryptablePacket( - undecryptable_packet->encryption_level, has_decryption_key)) { - QUIC_DVLOG(1) - << ENDPOINT - << "Need to attempt to process this undecryptable packet later"; - continue; - } - undecryptable_packet->processed = true; + auto iter = undecryptable_packets_.begin(); + while (connected_ && iter != undecryptable_packets_.end()) { + // Making sure there is no pending frames when processing next undecrypted + // packet because the queued ack frame may change. + packet_creator_.FlushCurrentPacket(); + if (!connected_) { + return; } - // 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()) { - if (!undecryptable_packets_.front().processed) { - break; - } - undecryptable_packets_.pop_front(); + UndecryptablePacket* undecryptable_packet = &*iter; + ++iter; + if (undecryptable_packet->processed) { + continue; } - } else { - while (connected_ && !undecryptable_packets_.empty()) { - // Making sure there is no pending frames when processing next undecrypted - // packet because the queued ack frame may change. - packet_creator_.FlushCurrentPacket(); - if (!connected_) { - return; - } - QUIC_DVLOG(1) << ENDPOINT << "Attempting to process undecryptable packet"; - const auto& undecryptable_packet = undecryptable_packets_.front(); - if (debug_visitor_ != nullptr) { - debug_visitor_->OnAttemptingToProcessUndecryptablePacket( - undecryptable_packet.encryption_level); - } - if (!framer_.ProcessPacket(*undecryptable_packet.packet) && - framer_.error() == QUIC_DECRYPTION_FAILURE) { - QUIC_DVLOG(1) << ENDPOINT - << "Unable to process undecryptable packet..."; - break; - } + QUIC_DVLOG(1) << ENDPOINT << "Attempting to process undecryptable packet"; + if (debug_visitor_ != nullptr) { + debug_visitor_->OnAttemptingToProcessUndecryptablePacket( + undecryptable_packet->encryption_level); + } + if (framer_.ProcessPacket(*undecryptable_packet->packet)) { QUIC_DVLOG(1) << ENDPOINT << "Processed undecryptable packet!"; + undecryptable_packet->processed = true; ++stats_.packets_processed; - undecryptable_packets_.pop_front(); + continue; } + const bool has_decryption_key = version().KnowsWhichDecrypterToUse() && + framer_.HasDecrypterOfEncryptionLevel( + undecryptable_packet->encryption_level); + if (framer_.error() == QUIC_DECRYPTION_FAILURE && + ShouldEnqueueUnDecryptablePacket(undecryptable_packet->encryption_level, + has_decryption_key)) { + QUIC_DVLOG(1) + << ENDPOINT + << "Need to attempt to process this undecryptable packet later"; + continue; + } + 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()) { + if (!undecryptable_packets_.front().processed) { + break; + } + undecryptable_packets_.pop_front(); } // Once forward secure encryption is in use, there will be no
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc index 97e5a4a..4d3189d 100644 --- a/quic/core/quic_connection_test.cc +++ b/quic/core/quic_connection_test.cc
@@ -11215,13 +11215,8 @@ connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE); connection_.SetEncrypter(ENCRYPTION_HANDSHAKE, std::make_unique<TaggingEncrypter>(0x01)); - if (GetQuicReloadableFlag(quic_fix_undecryptable_packets)) { - // Verify all ENCRYPTION_HANDSHAKE packets get processed. - EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(6); - } else { - // Verify packets before 4 get processed. - EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(3); - } + // Verify all ENCRYPTION_HANDSHAKE packets get processed. + EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(6); connection_.GetProcessUndecryptablePacketsAlarm()->Fire(); EXPECT_EQ(4u, QuicConnectionPeer::NumUndecryptablePackets(&connection_)); @@ -11231,13 +11226,8 @@ connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE); connection_.SetEncrypter(ENCRYPTION_FORWARD_SECURE, std::make_unique<TaggingEncrypter>(0x02)); - if (GetQuicReloadableFlag(quic_fix_undecryptable_packets)) { - // Verify the 1-RTT packet gets processed. - EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); - } else { - // Verify all packets get processed. - EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(4); - } + // Verify the 1-RTT packet gets processed. + EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); connection_.GetProcessUndecryptablePacketsAlarm()->Fire(); EXPECT_EQ(0u, QuicConnectionPeer::NumUndecryptablePackets(&connection_)); }