In quic, do not include max_ack_delay when calculating pto timeout for initial and handshake packet number spaces. protected by enabled gfe2_reloadable_flag_quic_fix_pto_timeout.
PiperOrigin-RevId: 318495662
Change-Id: Idce3e16c7f7761bf2519aadf1bb239f69be5494d
diff --git a/quic/core/quic_sent_packet_manager_test.cc b/quic/core/quic_sent_packet_manager_test.cc
index 97d83f5..7af3063 100644
--- a/quic/core/quic_sent_packet_manager_test.cc
+++ b/quic/core/quic_sent_packet_manager_test.cc
@@ -3256,7 +3256,9 @@
GetQuicReloadableFlag(quic_default_on_pto) ? 2 : 4;
QuicTime::Delta expected_pto_delay =
srtt + pto_rttvar_multiplier * rtt_stats->mean_deviation() +
- QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
+ (GetQuicReloadableFlag(quic_fix_pto_timeout)
+ ? QuicTime::Delta::Zero()
+ : QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs));
EXPECT_EQ(clock_.Now() + expected_pto_delay,
manager_.GetRetransmissionTime());
@@ -3317,6 +3319,9 @@
clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(10));
SendDataPacket(7, ENCRYPTION_HANDSHAKE);
// Verify PTO timeout is now based on packet 6.
+ expected_pto_delay =
+ srtt + pto_rttvar_multiplier * rtt_stats->mean_deviation() +
+ QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
EXPECT_EQ(packet6_sent_time + expected_pto_delay * 2,
manager_.GetRetransmissionTime());
@@ -3348,7 +3353,9 @@
GetQuicReloadableFlag(quic_default_on_pto) ? 2 : 4;
QuicTime::Delta expected_pto_delay =
srtt + pto_rttvar_multiplier * rtt_stats->mean_deviation() +
- QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
+ (GetQuicReloadableFlag(quic_fix_pto_timeout)
+ ? QuicTime::Delta::Zero()
+ : QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs));
EXPECT_EQ(packet1_sent_time + expected_pto_delay,
manager_.GetRetransmissionTime());
@@ -3381,6 +3388,9 @@
// Discard handshake keys.
manager_.SetHandshakeConfirmed();
+ expected_pto_delay =
+ srtt + pto_rttvar_multiplier * rtt_stats->mean_deviation() +
+ QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
// Verify PTO timeout is now based on packet 3 as handshake is
// complete/confirmed.
EXPECT_EQ(packet3_sent_time + expected_pto_delay,
@@ -3618,7 +3628,9 @@
GetQuicReloadableFlag(quic_default_on_pto) ? 2 : 4;
QuicTime::Delta expected_pto_delay =
srtt + pto_rttvar_multiplier * rtt_stats->mean_deviation() +
- QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
+ (GetQuicReloadableFlag(quic_fix_pto_timeout)
+ ? QuicTime::Delta::Zero()
+ : QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs));
EXPECT_EQ(packet1_sent_time + expected_pto_delay,
manager_.GetRetransmissionTime());
@@ -3653,6 +3665,9 @@
manager_.SetHandshakeConfirmed();
// Verify PTO timeout is now based on packet 3 as handshake is
// complete/confirmed.
+ expected_pto_delay =
+ srtt + pto_rttvar_multiplier * rtt_stats->mean_deviation() +
+ QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
EXPECT_EQ(packet3_sent_time + expected_pto_delay,
manager_.GetRetransmissionTime());
@@ -3695,7 +3710,9 @@
GetQuicReloadableFlag(quic_default_on_pto) ? 2 : 4;
QuicTime::Delta expected_pto_delay =
srtt + pto_rttvar_multiplier * rtt_stats->mean_deviation() +
- QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
+ (GetQuicReloadableFlag(quic_fix_pto_timeout)
+ ? QuicTime::Delta::Zero()
+ : QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs));
EXPECT_EQ(packet1_sent_time + expected_pto_delay,
manager_.GetRetransmissionTime());
@@ -3730,6 +3747,9 @@
manager_.SetHandshakeConfirmed();
// Verify PTO timeout is now based on packet 3 as handshake is
// complete/confirmed.
+ expected_pto_delay =
+ srtt + pto_rttvar_multiplier * rtt_stats->mean_deviation() +
+ QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
EXPECT_EQ(packet3_sent_time + expected_pto_delay,
manager_.GetRetransmissionTime());
@@ -3964,7 +3984,9 @@
const QuicTime::Delta pto_delay =
rtt_stats->smoothed_rtt() +
pto_rttvar_multiplier * rtt_stats->mean_deviation() +
- QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
+ (GetQuicReloadableFlag(quic_fix_pto_timeout)
+ ? QuicTime::Delta::Zero()
+ : QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs));
if (GetQuicReloadableFlag(quic_fix_last_inflight_packets_sent_time)) {
// Verify PTO is armed based on handshake data.
EXPECT_EQ(packet2_sent_time + pto_delay, manager_.GetRetransmissionTime());
@@ -4069,7 +4091,9 @@
GetQuicReloadableFlag(quic_default_on_pto) ? 2 : 4;
QuicTime::Delta expected_pto_delay =
srtt + pto_rttvar_multiplier * rtt_stats->mean_deviation() +
- QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
+ (GetQuicReloadableFlag(quic_fix_pto_timeout)
+ ? QuicTime::Delta::Zero()
+ : QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs));
EXPECT_EQ(packet1_sent_time + expected_pto_delay,
manager_.GetRetransmissionTime());