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-06-12 08:02:50 +0000
committerrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-12 08:02:50 +0000
commitd8bbef6a10db8a60d0aeef6d1d4ff577e6dc9472 (patch)
tree7a22c8ac949da9a697fba08e9b32a29c41b0f0db /net/quic/quic_sent_packet_manager.h
parentb2ffa50ab2602680d1cb8ae7ed0eda208dda378e (diff)
downloadchromium_src-d8bbef6a10db8a60d0aeef6d1d4ff577e6dc9472.zip
chromium_src-d8bbef6a10db8a60d0aeef6d1d4ff577e6dc9472.tar.gz
chromium_src-d8bbef6a10db8a60d0aeef6d1d4ff577e6dc9472.tar.bz2
Land Recent QUIC Changes.
(This CL merges changes until last Friday). Change the QUIC TLP to send new data instead of retransmitting old data when new data is available. Also tighten up the QuicSentPacketManagerTest for TLP per avd's request. Merge internal change: 68731782 https://codereview.chromium.org/327383002/ Use override consistently instead of virtual. Merge internal change: 68717267 https://codereview.chromium.org/325373002/ QUIC - added code to read kUAID in the server code from the CHLO message. The following is the list of kUAID strings for chrome built by google. The following is true for all platforms for clients built by google (android, posix, windows and chromeos). UAID: "unknown Chrome/37.0.2029.0" chrome developer's builds. UAID: " Chrome/37.0.2029.0" Stable UAID: "canary Chrome/37.0.2029.0" Canary UAID: "dev Chrome/37.0.2029.0" Dev UAID: "beta Chrome/37.0.2029.0" Beta Merge internal change: 68715745 https://codereview.chromium.org/333523002/ Minor change to keep the code similar between chromium and internal source tree. + use SupportedVersions. + One line per argument. + Minor fixes to comments. Merge internal change: 68659711 https://codereview.chromium.org/335433002/ Changed SetIpInfoInCmsg to return the length of the packet info structure used. Merge internal change: 68639530 https://codereview.chromium.org/329223003/ (minor) rename frames_ to buffered_frames_ in QuicStreamSequencer Merge internal change: 68571729 https://codereview.chromium.org/329403003/ Enables PacketGenerator's use of PacketCreator's FEC primitives. Adds methods in PacketGenerator that enable use of the PacketCreator's FEC primitives, and adds tests for these methods. Merge internal change: 68558082 https://codereview.chromium.org/326403006/ Connection level flow control (CLFC) accounting on receipt of FIN/RST for already closed streams. This implements the following behavior discussed internally. Proposal: implement rch/jar's solution from earlier in the thread, in which "bytes sent" is added to the RST frame, and each endpoint must send a FIN or RST containing "bytes sent" on stream termination. This gets the job done pretty simply, and will make our flow control very similar to SPDY. We can investigate more exotic dynamic stream window scaling (as per avd's suggestion earlier in the thread) in future if SPDY-style flow control is shown to be a problem. A stream *must* send either a FIN or a RST on termination, either of which contain enough data that the peer can definitively determine how many bytes were sent on that stream (this is already implemented). This CL implements the correct CLFC accounting of these frames when received after the stream has been closed locally. Motivating example: Client sends GET+FIN, Server sends response. Before response arrives, client RSTs the stream (user closed tab?), tearing down local state. Before this CL, when the server response arrives it just gets dropped - but the server has counted the bytes sent against its CLFC _send_ window. The client will not count these bytes against it's CLFC _receive_ window, and so the endpoint states are now out of sync. To fix this, when a stream is closed we store the current "last bytes received offset" in a map in the session, and handle a FIN/RST for a closed stream by removing the difference between the final byte offset from FIN/RST and the stored value from the map to the CLFC receive window. QUIC: Connection level flow control accounting on receipt of FIN/RST for already closed streams. Protected behind existing flag: FLAGS_enable_quic_connection_flow_control Merge internal change: 68555475 https://codereview.chromium.org/320263003/ Add QuicStreamSequencerPeer to quic/test_tools, to make stream sequencer tests more consistent with other tests. Merge internal change: 68553409 https://codereview.chromium.org/318333002/ R=rch@chromium.org Review URL: https://codereview.chromium.org/327393002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276575 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/quic_sent_packet_manager.h')
-rw-r--r--net/quic/quic_sent_packet_manager.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/net/quic/quic_sent_packet_manager.h b/net/quic/quic_sent_packet_manager.h
index 395d212..2e75786 100644
--- a/net/quic/quic_sent_packet_manager.h
+++ b/net/quic/quic_sent_packet_manager.h
@@ -101,6 +101,10 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
// Requests retransmission of all unacked packets of |retransmission_type|.
void RetransmitUnackedPackets(RetransmissionType retransmission_type);
+ // Retransmits the oldest pending packet there is still a tail loss probe
+ // pending. Invoked after OnRetransmissionTimeout.
+ bool MaybeRetransmitTailLossProbe();
+
// Removes the retransmittable frames from all unencrypted packets to ensure
// they don't get retransmitted.
void NeuterUnencryptedPackets();
@@ -206,9 +210,6 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
// Retransmits all crypto stream packets.
void RetransmitCryptoPackets();
- // Retransmits the oldest pending packet.
- void RetransmitOldestPacket();
-
// Retransmits all the packets and abandons by invoking a full RTO.
void RetransmitAllPackets();