| Index: net/quic/quic_received_packet_manager.cc
|
| diff --git a/net/quic/quic_received_packet_manager.cc b/net/quic/quic_received_packet_manager.cc
|
| index 844ad43e37b14d3e746f957ec2b1d77c9d100998..b24ac7c671eaee7a728a3d46124bd84d9246ba9c 100644
|
| --- a/net/quic/quic_received_packet_manager.cc
|
| +++ b/net/quic/quic_received_packet_manager.cc
|
| @@ -5,6 +5,7 @@
|
| #include "net/quic/quic_received_packet_manager.h"
|
|
|
| #include "base/logging.h"
|
| +#include "base/stl_util.h"
|
| #include "net/base/linked_hash_map.h"
|
|
|
| using std::make_pair;
|
| @@ -13,6 +14,17 @@ using std::min;
|
|
|
| namespace net {
|
|
|
| +namespace {
|
| +
|
| +// The maximum number of packets to ack immediately after a missing packet for
|
| +// fast retransmission to kick in at the sender. This limit is created to
|
| +// reduce the number of acks sent that have no benefit for fast retransmission.
|
| +// Set to the number of nacks needed for fast retransmit plus one for protection
|
| +// against an ack loss
|
| +const size_t kMaxPacketsAfterNewMissing = 4;
|
| +
|
| +}
|
| +
|
| QuicReceivedPacketManager::QuicReceivedPacketManager(
|
| CongestionFeedbackType congestion_type)
|
| : packets_entropy_hash_(0),
|
| @@ -60,6 +72,11 @@ void QuicReceivedPacketManager::RecordPacketReceived(
|
| }
|
| }
|
|
|
| +bool QuicReceivedPacketManager::IsMissing(
|
| + QuicPacketSequenceNumber sequence_number) {
|
| + return ContainsKey(received_info_.missing_packets, sequence_number);
|
| +}
|
| +
|
| bool QuicReceivedPacketManager::IsAwaitingPacket(
|
| QuicPacketSequenceNumber sequence_number) {
|
| return ::net::IsAwaitingPacket(received_info_, sequence_number);
|
| @@ -213,4 +230,10 @@ bool QuicReceivedPacketManager::HasMissingPackets() {
|
| return !received_info_.missing_packets.empty();
|
| }
|
|
|
| +bool QuicReceivedPacketManager::HasNewMissingPackets() {
|
| + return HasMissingPackets() &&
|
| + (received_info_.largest_observed -
|
| + *received_info_.missing_packets.rbegin()) <= kMaxPacketsAfterNewMissing;
|
| +}
|
| +
|
| } // namespace net
|
|
|