| Index: net/quic/congestion_control/time_loss_algorithm.cc
|
| diff --git a/net/quic/congestion_control/time_loss_algorithm.cc b/net/quic/congestion_control/time_loss_algorithm.cc
|
| index d23deadf118599d743bd42915ddf9ca3ca966d03..3a7b42d40879bfbfc54c8f7cb889ca5aae6ee39a 100644
|
| --- a/net/quic/congestion_control/time_loss_algorithm.cc
|
| +++ b/net/quic/congestion_control/time_loss_algorithm.cc
|
| @@ -39,22 +39,24 @@ SequenceNumberSet TimeLossAlgorithm::DetectLostPackets(
|
| QuicTime::Delta::Max(rtt_stats.SmoothedRtt(), rtt_stats.latest_rtt())
|
| .Multiply(kLossDelayMultiplier));
|
|
|
| + QuicPacketSequenceNumber sequence_number = unacked_packets.GetLeastUnacked();
|
| for (QuicUnackedPacketMap::const_iterator it = unacked_packets.begin();
|
| - it != unacked_packets.end() && it->first <= largest_observed; ++it) {
|
| - if (!it->second.in_flight) {
|
| + it != unacked_packets.end() && sequence_number <= largest_observed;
|
| + ++it, ++sequence_number) {
|
| + if (!it->in_flight) {
|
| continue;
|
| }
|
| - LOG_IF(DFATAL, it->second.nack_count == 0)
|
| + LOG_IF(DFATAL, it->nack_count == 0)
|
| << "All packets less than largest observed should have been nacked.";
|
|
|
| // Packets are sent in order, so break when we haven't waited long enough
|
| // to lose any more packets and leave the loss_time_ set for the timeout.
|
| - QuicTime when_lost = it->second.sent_time.Add(loss_delay);
|
| + QuicTime when_lost = it->sent_time.Add(loss_delay);
|
| if (time < when_lost) {
|
| loss_detection_timeout_ = when_lost;
|
| break;
|
| }
|
| - lost_packets.insert(it->first);
|
| + lost_packets.insert(sequence_number);
|
| }
|
|
|
| return lost_packets;
|
|
|