| 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 15030a4e5d9ab79b544ffb3d1f8f69b69bdc82f0..98136f8564f35a70333dbbb705292df9ad667848 100644
|
| --- a/net/quic/quic_received_packet_manager.cc
|
| +++ b/net/quic/quic_received_packet_manager.cc
|
| @@ -7,11 +7,13 @@
|
| #include "base/logging.h"
|
| #include "base/stl_util.h"
|
| #include "net/base/linked_hash_map.h"
|
| +#include "net/quic/crypto/crypto_protocol.h"
|
| #include "net/quic/quic_connection_stats.h"
|
|
|
| using std::make_pair;
|
| using std::max;
|
| using std::min;
|
| +using std::numeric_limits;
|
|
|
| namespace net {
|
|
|
| @@ -128,11 +130,10 @@ AdvanceFirstGapAndGarbageCollectEntropyMap() {
|
| }
|
|
|
| QuicReceivedPacketManager::QuicReceivedPacketManager(
|
| - CongestionFeedbackType congestion_type,
|
| QuicConnectionStats* stats)
|
| : peer_least_packet_awaiting_ack_(0),
|
| time_largest_observed_(QuicTime::Zero()),
|
| - receive_algorithm_(ReceiveAlgorithmInterface::Create(congestion_type)),
|
| + receive_algorithm_(ReceiveAlgorithmInterface::Create(kTCP)),
|
| stats_(stats) {
|
| ack_frame_.largest_observed = 0;
|
| ack_frame_.entropy_hash = 0;
|
| @@ -178,6 +179,9 @@ void QuicReceivedPacketManager::RecordPacketReceived(
|
| receive_algorithm_->RecordIncomingPacket(
|
| bytes, sequence_number, receipt_time);
|
|
|
| + received_packet_times_.push_back(
|
| + std::make_pair(sequence_number, receipt_time));
|
| +
|
| ack_frame_.revived_packets.erase(sequence_number);
|
| }
|
|
|
| @@ -216,6 +220,15 @@ void QuicReceivedPacketManager::UpdateReceivedPacketInfo(
|
|
|
| ack_frame->delta_time_largest_observed =
|
| approximate_now.Subtract(time_largest_observed_);
|
| +
|
| + // Remove all packets that are too far from largest_observed to express.
|
| + received_packet_times_.remove_if(
|
| + [this] (std::pair<QuicPacketSequenceNumber, QuicTime> p)
|
| + { return ack_frame_.largest_observed - p.first >=
|
| + numeric_limits<uint8>::max();});
|
| +
|
| + ack_frame->received_packet_times = received_packet_times_;
|
| + received_packet_times_.clear();
|
| }
|
|
|
| bool QuicReceivedPacketManager::GenerateCongestionFeedback(
|
|
|