summaryrefslogtreecommitdiffstats
path: root/net/quic/quic_sent_packet_manager.h
diff options
context:
space:
mode:
authorrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-08 19:01:52 +0000
committerrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-08 19:01:52 +0000
commit14a957522e13fd223f1fb9af4b8e61f1c3351189 (patch)
tree579532bdece6b154af9c86f98547e1fa07ff1f76 /net/quic/quic_sent_packet_manager.h
parentbc14fb52b468bbde0d12276d44f70b943f86c697 (diff)
downloadchromium_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.h20
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_;