Landing Recent QUIC changes until 06/07/2015.
commitd39bd7637e411fef8a39e61a4cb3f3b006de49dd
authorrtenneti <rtenneti@chromium.org>
Fri, 12 Jun 2015 01:05:52 +0000 (11 18:05 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 12 Jun 2015 01:07:07 +0000 (12 01:07 +0000)
tree272bce1402ab2adb6ac277cf56b3cf039b53f637
parent05c376f220bbffbc20ba6f5d8f1b42091467f12a
Landing Recent QUIC changes until 06/07/2015.

relnote: splitting quic client session into a virtual function (no-op)

Move the creation of the quic client session into a function
we can override to create custom sessions for quic-to-backend.

Merge internal change: 95324185
https://codereview.chromium.org/1174173008/

relnote: Reorder some commonly used QUIC structs according
ClassLayoutOptimizer's suggestions.

Merge internal change: 95320291
https://codereview.chromium.org/1178273005/

Fix QuicSession::GetCryptoStream() in tests to return non-null during
initialization.

Previously in some tests GetCryptoStream() was returning nullptr when
called during initialization and the stream was created later. That
wouldn't work if the crypto stream needs to be used during
initialization. Fixed tests that had this issue and added DCHECK in
Initialize().

relnote: Minor cleanup in QUIC tests

Merge internal change: 95316723
https://codereview.chromium.org/1180943004/

relnote: adding a default response to the quic cache (not used in
production).

Addding the option for a default value to be set for the quic in-memory
cache. This is needed for quic-to-backend because the internal server
tests assume a default response and one-offing per-url is silly. Plus
I've run up against this lack of feature in annoying ways a few times
now.

Merge internal change: 95297412
https://codereview.chromium.org/1177043007/

relnote: Reverse the sense of flag quic_stop_early and rename it to
FLAGS_quic_stop_early_2.  This causes QUIC frames to not be processed
after the connection is terminated.

FIXED=21370767

Merge internal change: 95296106
https://codereview.chromium.org/1183543002/

Test handshake message handling on packet generator level.

This tests the flush-on-handshake logic, and also verifies that the
packet is correctly padded (which would be helpful for subsequent
changes in which the packets will be tagged for padding by generator
itself).

relnote: n/a (test-only change)

Merge internal change: 95202648
https://codereview.chromium.org/1178253002/

Remove implementation of pure virtual functions in QuicFramerVisitorInterface.

relnote: n/a (removing dead code)

Merge internal change: 95197850
https://codereview.chromium.org/1184503002/

Avoid overloading QuicSession::InitializeSession().

Previously QuicServerSession and QuicClientSession were overloading
QuicSession::InitializeSession() with parameters. Moved the parameters
to the constructors so these child classes now can override
QuicSession::InitializeSession() instead of overloading it. Also made
the method virtual.

relnote: QuicSession cleanup, doesn't affect functionality

Merge internal change: 95174532
https://codereview.chromium.org/1173343002/

Minor change to keep the code similar to internal source.

Merge internal change: 95167379
https://codereview.chromium.org/1181533005/

relnote: Increase QUIC flow control window sizes dynamically if data
flows quickly enough. Flag protected by
FLAGS_quic_receive_window_auto_tune, and new AFCW connection tag.

QUIC receivers send WINDOW_UPDATE when the flow passes the 1/2 point of
the current window position.  Analysis shows that WINDOW_UPDATES must be
more than 1 * RTT apart to prevent the sender from being impeded due to
insufficient window size, and a minimum receive window size of 2 * BDP.

To avoid the sender becoming blocked, we monitor the timing of window
updates relative to the flow rate, and if necessary increase the window
size.  To add some padding for transients, this algorithm uses trigger
of 2 * RTT to increase receive window size, on the interval between
successive WINDOW_UPDATES, which corresponds to targeting a receive
window size of ~ 4 * BDP.

Merge internal change: 95154188
https://codereview.chromium.org/1180693004/

Reversed if statements check for FEC_ANY_TRIGGER with FEC_ALARM_TRIGGER
check.

From jri: Since FEC_ANY_TRIGGER is the "catch-all" policy, it seems more
readable to have the if clause reversed... i.e., check for
FEC_ALARM_TRIGGER and the catch-all be in the else clause.

relnote: n/a. Test only readability change.

Merge internal change: 95122056
https://codereview.chromium.org/1175113004/

R=rch@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#334099}
46 files changed:
net/quic/crypto/crypto_protocol.h
net/quic/quic_client_session.cc
net/quic/quic_client_session.h
net/quic/quic_client_session_test.cc
net/quic/quic_connection.cc
net/quic/quic_crypto_client_stream_test.cc
net/quic/quic_crypto_server_stream_test.cc
net/quic/quic_flags.cc
net/quic/quic_flags.h
net/quic/quic_flow_controller.cc
net/quic/quic_flow_controller.h
net/quic/quic_flow_controller_test.cc
net/quic/quic_framer.cc
net/quic/quic_http_stream_test.cc
net/quic/quic_packet_generator_test.cc
net/quic/quic_protocol.cc
net/quic/quic_protocol.h
net/quic/quic_session.cc
net/quic/quic_session.h
net/quic/quic_session_test.cc
net/quic/quic_stream_factory.cc
net/quic/reliable_quic_stream.cc
net/quic/test_tools/crypto_test_utils.cc
net/quic/test_tools/quic_flow_controller_peer.cc
net/quic/test_tools/quic_flow_controller_peer.h
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.cc
net/tools/quic/quic_client.h
net/tools/quic/quic_client_session.cc
net/tools/quic/quic_client_session.h
net/tools/quic/quic_client_session_test.cc
net/tools/quic/quic_dispatcher.cc
net/tools/quic/quic_dispatcher_test.cc
net/tools/quic/quic_in_memory_cache.cc
net/tools/quic/quic_in_memory_cache.h
net/tools/quic/quic_in_memory_cache_test.cc
net/tools/quic/quic_server_session.cc
net/tools/quic/quic_server_session.h
net/tools/quic/quic_server_session_test.cc
net/tools/quic/quic_simple_client.cc
net/tools/quic/quic_simple_client.h
net/tools/quic/quic_spdy_client_stream_test.cc
net/tools/quic/test_tools/quic_test_utils.cc
net/tools/quic/test_tools/quic_test_utils.h