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 171f6e2eac353ad0743d9a30a0fd518eaf1a54cf..ffdea9bc449eba38e33bb3cfe8b945aead0bcd3e 100644 |
--- a/net/quic/quic_sent_packet_manager.cc |
+++ b/net/quic/quic_sent_packet_manager.cc |
@@ -79,6 +79,7 @@ QuicSentPacketManager::QuicSentPacketManager( |
stats)), |
loss_algorithm_(LossDetectionInterface::Create(loss_type)), |
largest_observed_(0), |
+ least_packet_awaited_by_peer_(1), |
first_rto_transmission_(0), |
consecutive_rto_count_(0), |
consecutive_tlp_count_(0), |
@@ -179,6 +180,7 @@ void QuicSentPacketManager::OnIncomingAck(const QuicAckFrame& ack_frame, |
QuicTime ack_receive_time) { |
QuicByteCount bytes_in_flight = unacked_packets_.bytes_in_flight(); |
+ UpdatePacketInformationReceivedByPeer(ack_frame); |
// We rely on delta_time_largest_observed to compute an RTT estimate, so |
// we only update rtt when the largest observed gets acked. |
bool largest_observed_acked = MaybeUpdateRTT(ack_frame, ack_receive_time); |
@@ -223,6 +225,15 @@ void QuicSentPacketManager::OnIncomingAck(const QuicAckFrame& ack_frame, |
} |
} |
+void QuicSentPacketManager::UpdatePacketInformationReceivedByPeer( |
+ const QuicAckFrame& ack_frame) { |
+ if (ack_frame.missing_packets.empty()) { |
+ least_packet_awaited_by_peer_ = ack_frame.largest_observed + 1; |
+ } else { |
+ least_packet_awaited_by_peer_ = *(ack_frame.missing_packets.begin()); |
+ } |
+} |
+ |
void QuicSentPacketManager::MaybeInvokeCongestionEvent( |
bool rtt_updated, QuicByteCount bytes_in_flight) { |
if (!rtt_updated && packets_acked_.empty() && packets_lost_.empty()) { |