Index: net/quic/quic_sent_packet_manager.cc |
diff --git a/net/quic/quic_sent_packet_manager.cc b/net/quic/quic_sent_packet_manager.cc |
index ba581672f17d8ba1c745af3cb103f3276b618056..d92140ad896468c667f54babcb60935482bff69b 100644 |
--- a/net/quic/quic_sent_packet_manager.cc |
+++ b/net/quic/quic_sent_packet_manager.cc |
@@ -38,6 +38,9 @@ static const size_t kMinHandshakeTimeoutMs = 10; |
static const size_t kDefaultMaxTailLossProbes = 2; |
static const int64 kMinTailLossProbeTimeoutMs = 10; |
+// Number of samples before we force a new recent min rtt to be captured. |
+static const size_t kNumMinRttSamplesAfterQuiescence = 2; |
+ |
bool HasCryptoHandshake(const TransmissionInfo& transmission_info) { |
if (transmission_info.retransmittable_frames == NULL) { |
return false; |
@@ -444,6 +447,14 @@ bool QuicSentPacketManager::OnPacketSent( |
return false; |
} |
+ if (unacked_packets_.bytes_in_flight() == 0) { |
+ // TODO(ianswett): Consider being less aggressive to force a new |
+ // recent_min_rtt, likely by not discarding a relatively new sample. |
+ DVLOG(1) << "Sampling a new recent min rtt within 2 samples. currently:" |
+ << rtt_stats_.recent_min_rtt().ToMilliseconds() << "ms"; |
+ rtt_stats_.SampleNewRecentMinRtt(kNumMinRttSamplesAfterQuiescence); |
+ } |
+ |
// Only track packets as pending that the send algorithm wants us to track. |
const bool pending = |
send_algorithm_->OnPacketSent(sent_time, |