Landing Recent QUIC Changes.
commit31e9fd65aa1f2d7753f356fc267743a039fbd980
authorrtenneti <rtenneti@chromium.org>
Tue, 16 Sep 2014 05:22:15 +0000 (15 22:22 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 16 Sep 2014 05:23:16 +0000 (16 05:23 +0000)
treefe6404d4d65a47db1f36c622ff15e0cdeb4bd563
parentea09faed7faa245e638caedc2b871550a2139d76
Landing Recent QUIC Changes.

Discard all useless QUIC retransmissions instead of only the most recent
useless retransmission.

May reduce the chances of truncated acks.

Merge internal change: 75561951
https://codereview.chromium.org/564663005/

Add a separate QUIC_CONNECTION_OVERALL_TIMED_OUT to identify overall
timeouts from idle timeouts and increase the initial overall timeout
from 5s to 10s.

Merge internal change: 75544619
https://codereview.chromium.org/572083003/

Fix QUIC crash on ConnectionClose, protected behind renamed flag
FLAGS_close_quic_connection_unfinished_streams_2 (defaulted to false).

With this change we avoid trying to close the connection while driving
the QUIC internal server response pipeline, as the call to
SendConnectionClose now happens during PostProcessAfterData, which is
only ever called after receiving new data. With a hacky
client/QUIC internal server combo (sending > 100 requests, but never
sending FIN/RST) I've verified that with this change we don't hit the
DFATAL from the attached bug.

Still not entirely sure why Chrome would trigger this, b/17402744 is
open to investigate why it ever opens more than kMaxStreams.

Merge internal change: 75541290
https://codereview.chromium.org/575593002/

Add a LOG(DFATAL) to a case where packets are acked before being sent.

Merge internal change: 75537267
https://codereview.chromium.org/575573003/

Allow number of open QUIC streams to grow 10% beyond configured limit at
the QUIC internal server before closing connection.

In the following situation Chrome may open more streams than the
configured limit:

* opens kMaxStreams streams
* sends a FIN for one of the streams, now has kMaxStreams-1 streams open
* opens a new stream
* FIN gets lost on way to QUIC internal server
* QUIC internal server terminates connection when new stream packet
  arrives

Rather than making Chrome keep track of when the server has acknowledged
a FIN, just give 10% breathing room which should avoid this case.

Merge internal change: 75393293
https://codereview.chromium.org/557363003/

client-only - Change QUIC clients to use the initial RTT estimate that
they provide to the server instead of the default.

Re-enabled LimitCongestionWindowAndRTT end_to_end unittest (since we
have fixed lot of flaky tests). Will test chromeos valgrind.

Merge internal change: 75389539
https://codereview.chromium.org/573763003/
BUG=321870

Increase flow control receive window of quic_client_bin.cc, by adding a
flag that defaults to 10 Mb.

Added --flow-control-window-bytes as argument.

Merge internal change: 75381087
https://codereview.chromium.org/569353003/

Call QuicSentPacketManager's OnPacketSerialized or OnRetransmittedPacket
right before OnPacketSent, in preparation for combining the three
methods into one.

Merge internal change: 75340764
https://codereview.chromium.org/566743003/

Instead of initializing QuicSession::next_stream_id_ to 3 in the
construct, and then setting it to 5 in InitializeSession simply
initialize it to 5 in the constructor.

Merge internal change: 75335114
https://codereview.chromium.org/562793003/

Do not allow a QUIC connection to timeout if no packets have been sent
or received. Protected by FLAGS_quic_timeouts_require_activity.

This seems to happen on windows from time to time and causes problems
there.

Merge internal change: 75304108
https://codereview.chromium.org/571993002/

Minor change to QUIC's retransmission to not link old retransmissions
with new ones when the version or encryption changes.

Allows the least_unacked to be raised more quickly, preventing spurious
acks.

Merge internal change: 75290729
https://codereview.chromium.org/572703003/

Removed unnecessary static_cast and replaced it with "lu".

Minor change to keep the code similar to internal code.

Merge internal change: 75263809
https://codereview.chromium.org/566373003/

QUIC cleanup to remove an unused bool argument in SendOrQueuePacket and
OnSerializedPacket.

Merge internal change: 75208575
https://codereview.chromium.org/553583007/

R=rch@chromium.org

Review URL: https://codereview.chromium.org/559373003

Cr-Commit-Position: refs/heads/master@{#295014}
31 files changed:
net/quic/quic_config.cc
net/quic/quic_config.h
net/quic/quic_config_test.cc
net/quic/quic_connection.cc
net/quic/quic_connection.h
net/quic/quic_connection_test.cc
net/quic/quic_crypto_client_stream_test.cc
net/quic/quic_flags.cc
net/quic/quic_flags.h
net/quic/quic_packet_generator.h
net/quic/quic_packet_generator_test.cc
net/quic/quic_protocol.cc
net/quic/quic_protocol.h
net/quic/quic_sent_packet_manager.cc
net/quic/quic_sent_packet_manager.h
net/quic/quic_sent_packet_manager_test.cc
net/quic/quic_server_session.cc
net/quic/quic_session.cc
net/quic/quic_session.h
net/quic/quic_session_test.cc
net/quic/quic_unacked_packet_map.cc
net/quic/quic_unacked_packet_map.h
net/quic/quic_unacked_packet_map_test.cc
net/quic/quic_utils.cc
net/quic/test_tools/mock_crypto_client_stream.cc
net/quic/test_tools/quic_test_utils.cc
net/quic/test_tools/quic_test_utils.h
net/tools/quic/end_to_end_test.cc
net/tools/quic/quic_client_bin.cc
net/tools/quic/quic_server_session.cc
net/tools/quic/quic_server_session_test.cc