summaryrefslogtreecommitdiffstats
path: root/net/quic/quic_received_packet_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/quic/quic_received_packet_manager.cc')
-rw-r--r--net/quic/quic_received_packet_manager.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/net/quic/quic_received_packet_manager.cc b/net/quic/quic_received_packet_manager.cc
index f49391c..98cc86b 100644
--- a/net/quic/quic_received_packet_manager.cc
+++ b/net/quic/quic_received_packet_manager.cc
@@ -179,13 +179,15 @@ void QuicReceivedPacketManager::RecordPacketReceived(
ack_frame_.received_packet_times.push_back(
std::make_pair(packet_number, receipt_time));
- ack_frame_.revived_packets.erase(packet_number);
+ if (ack_frame_.latest_revived_packet == packet_number) {
+ ack_frame_.latest_revived_packet = 0;
+ }
}
void QuicReceivedPacketManager::RecordPacketRevived(
QuicPacketNumber packet_number) {
LOG_IF(DFATAL, !IsAwaitingPacket(packet_number));
- ack_frame_.revived_packets.insert(packet_number);
+ ack_frame_.latest_revived_packet = packet_number;
}
bool QuicReceivedPacketManager::IsMissing(QuicPacketNumber packet_number) {
@@ -253,9 +255,9 @@ QuicPacketEntropyHash QuicReceivedPacketManager::EntropyHash(
bool QuicReceivedPacketManager::DontWaitForPacketsBefore(
QuicPacketNumber least_unacked) {
- ack_frame_.revived_packets.erase(
- ack_frame_.revived_packets.begin(),
- ack_frame_.revived_packets.lower_bound(least_unacked));
+ if (ack_frame_.latest_revived_packet < least_unacked) {
+ ack_frame_.latest_revived_packet = 0;
+ }
return ack_frame_.missing_packets.RemoveUpTo(least_unacked);
}