diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-08 19:01:52 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-08 19:01:52 +0000 |
commit | 14a957522e13fd223f1fb9af4b8e61f1c3351189 (patch) | |
tree | 579532bdece6b154af9c86f98547e1fa07ff1f76 /net/quic/quic_sent_packet_manager.h | |
parent | bc14fb52b468bbde0d12276d44f70b943f86c697 (diff) | |
download | chromium_src-14a957522e13fd223f1fb9af4b8e61f1c3351189.zip chromium_src-14a957522e13fd223f1fb9af4b8e61f1c3351189.tar.gz chromium_src-14a957522e13fd223f1fb9af4b8e61f1c3351189.tar.bz2 |
Land Recent QUIC Changes.
Fix QUIC faster stats reporting memory leaks and crashes by changing
lifetime once again. Now QuicAckNotify::DelegateInterface, one of the
base classes of QuicFasterStatsGatherer, is ref-counted so
QuicFasterStatsGatherer is guanrateed to be around until either faster
stats reporting happens or the last ack is delivered by the
QuicConnection.
Merge internal change: 59228960
https://codereview.chromium.org/126543005/
Add a test requested by rch@ in cr/59053386 to replicate a potential
DCHECK failure.
Merge internal change: 59147972
https://codereview.chromium.org/127563002/
QUIC - Syncing with internal source code. Fixing the include
order. Added missing OVERRIDE.
Merge internal change: 59061118
https://codereview.chromium.org/127553002/
Make TimeWaitListManager use PacketWriter's socket writability state.
Merge internal change: 59058066
https://codereview.chromium.org/127523002/
Make QuicPacketWriter keep track of socket writability; expose the
underlying writer's state instead of keeping a separate variable in
Dispatcher.
Eventually we'll thread this to session/connection as suggested in
a TODO.
Merge internal change: 59055651
https://codereview.chromium.org/127503002/
Fix a QUIC DCHECK flakiness caused by not checking if a packet is
pending before asserting that it's in the sent_packet_map.
Merge internal change: 59053386
https://codereview.chromium.org/127003002/
QUIC Cleanup to remove pending_packets from QuicSentPacketManager and
use a flag in unacked_packets_.
Replaced FindOrNull and FindOrDie with find() call.
Merge internal change: 59015729
https://codereview.chromium.org/126983002/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/127633002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243619 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/quic_sent_packet_manager.h')
-rw-r--r-- | net/quic/quic_sent_packet_manager.h | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/net/quic/quic_sent_packet_manager.h b/net/quic/quic_sent_packet_manager.h index e11cce5..8339fba 100644 --- a/net/quic/quic_sent_packet_manager.h +++ b/net/quic/quic_sent_packet_manager.h @@ -206,13 +206,15 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager { : retransmittable_frames(NULL), sequence_number_length(PACKET_1BYTE_SEQUENCE_NUMBER), sent_time(QuicTime::Zero()), - previous_transmissions(NULL) { } + previous_transmissions(NULL), + pending(false) { } TransmissionInfo(RetransmittableFrames* retransmittable_frames, QuicSequenceNumberLength sequence_number_length) : retransmittable_frames(retransmittable_frames), sequence_number_length(sequence_number_length), sent_time(QuicTime::Zero()), - previous_transmissions(NULL) { + previous_transmissions(NULL), + pending(false) { } RetransmittableFrames* retransmittable_frames; @@ -222,6 +224,8 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager { // Stores all previous transmissions if the packet has been retransmitted, // and is NULL otherwise. SequenceNumberSet* previous_transmissions; + // Pending packets have not been abandoned or lost. + bool pending; }; typedef linked_hash_map<QuicPacketSequenceNumber, @@ -231,12 +235,15 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager { static bool HasCryptoHandshake(const TransmissionInfo& transmission_info); + // Returns true if there are unacked packets that are pending. + bool HasPendingPackets() const; + // Process the incoming ack looking for newly ack'd data packets. void HandleAckForSentPackets(const ReceivedPacketInfo& received_info); // Called when a packet is timed out, such as an RTO. Removes the bytes from // the congestion manager, but does not change the congestion window size. - virtual void OnPacketAbandoned(QuicPacketSequenceNumber sequence_number); + virtual void OnPacketAbandoned(UnackedPacketMap::iterator it); // Returns the current retransmission mode. RetransmissionTimeoutMode GetRetransmissionMode() const; @@ -284,11 +291,6 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager { void MarkForRetransmission(QuicPacketSequenceNumber sequence_number, TransmissionType transmission_type); - // Returns the length of the serialized sequence number for - // the packet |sequence_number|. - QuicSequenceNumberLength GetSequenceNumberLength( - QuicPacketSequenceNumber sequence_number) const; - // Clears up to |num_to_clear| previous transmissions in order to make room // in the ack frame for new acks. void ClearPreviousRetransmissions(size_t num_to_clear); @@ -326,8 +328,6 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager { // Tracks the send time, size, and nack count of sent packets. Packets are // removed after 5 seconds and they've been removed from pending_packets_. SendAlgorithmInterface::SentPacketsMap packet_history_map_; - // Packets that are outstanding and have not been abandoned or lost. - SequenceNumberSet pending_packets_; QuicTime::Delta rtt_sample_; // RTT estimate from the most recent ACK. // Number of outstanding crypto handshake packets. size_t pending_crypto_packet_count_; |