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 ad83057217a17e8f2f3ab7caa674a890c66d30e6..9ac7210031e9dc39fbf7c29c1287a8f34e057b91 100644 |
--- a/net/quic/quic_sent_packet_manager.cc |
+++ b/net/quic/quic_sent_packet_manager.cc |
@@ -399,9 +399,10 @@ bool QuicSentPacketManager::OnPacketSent( |
void QuicSentPacketManager::OnRetransmissionTimeout() { |
DCHECK(unacked_packets_.HasPendingPackets()); |
- // Handshake retransmission, TLP, and RTO are implemented with a single alarm. |
- // The handshake alarm is set when the handshake has not completed, and the |
- // TLP and RTO alarms are set after that. |
+ // Handshake retransmission, timer based loss detection, TLP, and RTO are |
+ // implemented with a single alarm. The handshake alarm is set when the |
+ // handshake has not completed, the loss alarm is set when the loss detection |
+ // algorithm says to, and the TLP and RTO alarms are set after that. |
// The TLP alarm is always set to run for under an RTO. |
switch (GetRetransmissionMode()) { |
case HANDSHAKE_MODE: |
@@ -409,6 +410,7 @@ void QuicSentPacketManager::OnRetransmissionTimeout() { |
RetransmitCryptoPackets(); |
return; |
case LOSS_MODE: |
+ ++stats_->loss_timeout_count; |
InvokeLossDetection(clock_->Now()); |
return; |
case TLP_MODE: |
@@ -560,7 +562,8 @@ void QuicSentPacketManager::InvokeLossDetection(QuicTime time) { |
loss_algorithm_->DetectLostPackets(unacked_packets_, |
time, |
largest_observed_, |
- send_algorithm_->SmoothedRtt()); |
+ send_algorithm_->SmoothedRtt(), |
+ rtt_sample_); |
for (SequenceNumberSet::const_iterator it = lost_packets.begin(); |
it != lost_packets.end(); ++it) { |
QuicPacketSequenceNumber sequence_number = *it; |