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