Consider address has been validated by successfully processing a HANDSHAKE or 1-RTT packet. Protected by FLAGS_quic_reloadable_flag_quic_fix_address_validation. PiperOrigin-RevId: 336756590 Change-Id: I9b28e79d68de8f511c24d6eab524db50bd616a63
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index 77fd2c5..cfb6b3e 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -1128,10 +1128,20 @@ void QuicConnection::OnDecryptedPacket(EncryptionLevel level) { last_decrypted_packet_level_ = level; last_packet_decrypted_ = true; - if (EnforceAntiAmplificationLimit() && - last_decrypted_packet_level_ >= ENCRYPTION_HANDSHAKE) { - // Address is validated by successfully processing a HANDSHAKE packet. - address_validated_ = true; + if (EnforceAntiAmplificationLimit()) { + bool address_validated = + last_decrypted_packet_level_ >= ENCRYPTION_HANDSHAKE; + if (GetQuicReloadableFlag(quic_fix_address_validation)) { + QUIC_RELOADABLE_FLAG_COUNT(quic_fix_address_validation); + address_validated = + (last_decrypted_packet_level_ == ENCRYPTION_HANDSHAKE || + last_decrypted_packet_level_ == ENCRYPTION_FORWARD_SECURE); + } + if (address_validated) { + // Address is validated by successfully processing a HANDSHAKE or 1-RTT + // packet. + address_validated_ = true; + } } idle_network_detector_.OnPacketReceived(time_of_last_received_packet_);