Internal change PiperOrigin-RevId: 452615923
diff --git a/quiche/quic/core/quic_idle_network_detector.cc b/quiche/quic/core/quic_idle_network_detector.cc index 6371596..a5bd8ad 100644 --- a/quiche/quic/core/quic_idle_network_detector.cc +++ b/quiche/quic/core/quic_idle_network_detector.cc
@@ -71,6 +71,7 @@ QuicTime::Delta handshake_timeout, QuicTime::Delta idle_network_timeout) { handshake_timeout_ = handshake_timeout; idle_network_timeout_ = idle_network_timeout; + bandwidth_update_timeout_ = QuicTime::Delta::Infinite(); if (GetQuicRestartFlag( quic_enable_sending_bandwidth_estimate_when_network_idle) &&
diff --git a/quiche/quic/core/quic_idle_network_detector_test.cc b/quiche/quic/core/quic_idle_network_detector_test.cc index b838cbd..9105ec9 100644 --- a/quiche/quic/core/quic_idle_network_detector_test.cc +++ b/quiche/quic/core/quic_idle_network_detector_test.cc
@@ -247,6 +247,35 @@ EXPECT_FALSE(alarm_->IsSet()); } +TEST_F(QuicIdleNetworkDetectorTest, + ResetBandwidthTimeoutWhenHandshakeTimeoutIsSet) { + if (!GetQuicRestartFlag( + quic_enable_sending_bandwidth_estimate_when_network_idle)) { + return; + } + detector_->SetTimeouts( + /*handshake_timeout=*/QuicTime::Delta::Infinite(), + /*idle_network_timeout=*/QuicTime::Delta::FromSeconds(20)); + // The deadline is set based on the bandwidth timeout. + EXPECT_EQ(clock_.Now() + QuicTime::Delta::FromSeconds(10), + alarm_->deadline()); + + detector_->SetTimeouts( + /*handshake_timeout=*/QuicTime::Delta::FromSeconds(15), + /*idle_network_timeout=*/QuicTime::Delta::FromSeconds(20)); + // Bandwidth timeout is reset and the deadline is set based on the handshake + // timeout. + EXPECT_EQ(clock_.Now() + QuicTime::Delta::FromSeconds(15), + alarm_->deadline()); + + detector_->SetTimeouts( + /*handshake_timeout=*/QuicTime::Delta::Infinite(), + /*idle_network_timeout=*/QuicTime::Delta::FromSeconds(20)); + // The deadline is set based on the bandwidth timeout. + EXPECT_EQ(clock_.Now() + QuicTime::Delta::FromSeconds(10), + alarm_->deadline()); +} + } // namespace } // namespace test