diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-12 08:02:50 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-12 08:02:50 +0000 |
commit | d8bbef6a10db8a60d0aeef6d1d4ff577e6dc9472 (patch) | |
tree | 7a22c8ac949da9a697fba08e9b32a29c41b0f0db /net/quic/quic_sent_packet_manager.h | |
parent | b2ffa50ab2602680d1cb8ae7ed0eda208dda378e (diff) | |
download | chromium_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.h | 7 |
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(); |