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 59fed1669fcacd0889c6db797025853976b64928..f88b28c074856910a4671c4b0d85e8dcb3dbd28f 100644 |
--- a/net/quic/quic_sent_packet_manager.cc |
+++ b/net/quic/quic_sent_packet_manager.cc |
@@ -140,7 +140,8 @@ void QuicSentPacketManager::OnIncomingAck( |
void QuicSentPacketManager::DiscardUnackedPacket( |
QuicPacketSequenceNumber sequence_number) { |
- MarkPacketHandled(sequence_number, NOT_RECEIVED_BY_PEER); |
+ MarkPacketHandled(sequence_number, QuicTime::Delta::Zero(), |
+ NOT_RECEIVED_BY_PEER); |
} |
void QuicSentPacketManager::HandleAckForSentPackets( |
@@ -155,11 +156,14 @@ void QuicSentPacketManager::HandleAckForSentPackets( |
break; |
} |
+ QuicTime::Delta delta_largest_observed = |
+ received_info.delta_time_largest_observed; |
if (IsAwaitingPacket(received_info, sequence_number)) { |
// Remove any packets not being tracked by the send algorithm, allowing |
// the high water mark to be raised if necessary. |
if (QuicUnackedPacketMap::IsSentAndNotPending(it->second)) { |
- it = MarkPacketHandled(sequence_number, NOT_RECEIVED_BY_PEER); |
+ it = MarkPacketHandled(sequence_number, delta_largest_observed, |
+ NOT_RECEIVED_BY_PEER); |
} else { |
++it; |
} |
@@ -170,7 +174,8 @@ void QuicSentPacketManager::HandleAckForSentPackets( |
DVLOG(1) << ENDPOINT <<"Got an ack for packet " << sequence_number; |
// If data is associated with the most recent transmission of this |
// packet, then inform the caller. |
- it = MarkPacketHandled(sequence_number, RECEIVED_BY_PEER); |
+ it = MarkPacketHandled(sequence_number, delta_largest_observed, |
+ RECEIVED_BY_PEER); |
} |
// Discard any retransmittable frames associated with revived packets. |
@@ -210,7 +215,8 @@ void QuicSentPacketManager::RetransmitUnackedPackets( |
// pending retransmissions which would be cleared. |
if (frames == NULL && unacked_it->second.all_transmissions->size() == 1 && |
retransmission_type == ALL_PACKETS) { |
- unacked_it = MarkPacketHandled(unacked_it->first, NOT_RECEIVED_BY_PEER); |
+ unacked_it = MarkPacketHandled(unacked_it->first, QuicTime::Delta::Zero(), |
+ NOT_RECEIVED_BY_PEER); |
continue; |
} |
// If it had no other transmissions, we handle it above. If it has |
@@ -278,10 +284,9 @@ QuicSentPacketManager::PendingRetransmission |
transmission_info.sequence_number_length); |
} |
-QuicUnackedPacketMap::const_iterator |
-QuicSentPacketManager::MarkPacketHandled( |
+QuicUnackedPacketMap::const_iterator QuicSentPacketManager::MarkPacketHandled( |
QuicPacketSequenceNumber sequence_number, |
- ReceivedByPeer received_by_peer) { |
+ QuicTime::Delta delta_largest_observed, ReceivedByPeer received_by_peer) { |
if (!unacked_packets_.IsUnacked(sequence_number)) { |
LOG(DFATAL) << "Packet is not unacked: " << sequence_number; |
return unacked_packets_.end(); |
@@ -311,7 +316,8 @@ QuicSentPacketManager::MarkPacketHandled( |
// The AckNotifierManager needs to be notified about the most recent |
// transmission, since that's the one only one it tracks. |
- ack_notifier_manager_.OnPacketAcked(newest_transmission); |
+ ack_notifier_manager_.OnPacketAcked(newest_transmission, |
+ delta_largest_observed); |
bool has_crypto_handshake = HasCryptoHandshake( |
unacked_packets_.GetTransmissionInfo(newest_transmission)); |