Land Recent QUIC Changes until 04/30/2015.
commite0ee6eb405c96a4775330d2f43378d6add200027
authorrtenneti <rtenneti@chromium.org>
Fri, 1 May 2015 00:55:09 +0000 (30 17:55 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 1 May 2015 00:55:42 +0000 (1 00:55 +0000)
treea05fae8e86fc5335cfda7173b13c1ddf2564561a
parent83702558f580081d9223fcde6f36bc030c82676d
Land Recent QUIC Changes until 04/30/2015.

Deprecate --FLAGS_quic_do_not_retransmit_for_reset_streams.

Merge internal change: 92249265
https://codereview.chromium.org/1111703003/

Remove QUIC v23

This means that the headers stream only speaks SPDY/4.
This removes the congestion feedback tag vector from the handshake.

Merge internal change: 92245766
https://codereview.chromium.org/1115883002/

Fix a minor bug in TcpCubicSender in the conversion from packets to bytes.

Merge internal change: 92010035
https://codereview.chromium.org/1103163006/

Don't calculate or send bandwidth resumption source address tokens when
the bandwidth resumption experiment is disabled.

Estimated to save 0.5% of CPU on bandaid.

Merge internal change: 92003353
https://codereview.chromium.org/1113833003/

Allocate encrypted packets into a buffer on the stack.

Estimated to save ~4% of CPU.

Merge internal change: 92000931
https://codereview.chromium.org/1115873002/

Flag-protected. Add SREJ support to quic crypto server config.

ProcessClientHello and BuildRejection now take two extra arugments,
indicating a) that the server should generate stateless rejects and b)
if stateless, the new connection ID that should be added to the message.

In theory, every reject emitted could be a stateless reject.  The
tests have been modified with two new parameters:

1.  Stateless reject support enabled via flag.
2.  Server configured to emit stateless rejects.

They then check to ensure that, if enabled, the reject is formatted
correctly.

In chromium, set FLAGS_enable_quic_stateless_reject_support to false.

Merge internal change: 91946386
https://codereview.chromium.org/1112693005/

Break out QUIC's balsa-specific SPDY utilities from SpdyUtils to
SpdyBalsaUtils to help ease the process of merging to Chrome.

Merge internal change: 91854176
https://codereview.chromium.org/1112923002/

Prevent a crash when the stream frame is NULL. Log an detailed DFATAL
and close the connection instead.

Merge internal change: 91820383
https://codereview.chromium.org/1111413004/

Doing a better job of cleaning up quic udp proxy state.

Fully tearing down the client we use for probing connectivity to core
when we do UDP proxying, while preserving the file descriptor.

Chrome specific change: make CleanUpUDPSocket virtual.

Merge internal change: 91805238
https://codereview.chromium.org/1120433002/

Update QuicPacketGeneratorTest to save every packet when it's serialized
into a vector instead of into separate variables.  Test only change.

Merge internal change: 91631596
https://codereview.chromium.org/1105283003/

Update QuicPacketGeneratorTest to save every packet when it's serialized
into a vector instead of into separate variables.  Test only change.

Merge internal change: 91631596
https://codereview.chromium.org/1105283003/

Change QuicPacketGenerator's destructor to use the more compact for
syntax.  No functional change.

Merge internal change: 91620560
https://codereview.chromium.org/1117503002/

Adding a comment to make clear the toy server is a toy.

Merge internal change: 91604221
https://codereview.chromium.org/1113713002/

Minor code QUIC readability improvements.  No functional changes.

Merge internal change: 91545808
https://codereview.chromium.org/1116543002/

Add QuicClientCryptoConfig stateless-reject support.

(This change is not flag-protected, since it only affects the
client-side.)

When the QuicClientCryptoConfig receives a stateless reject, it will
read the server-designated connection ID from the reject message.  It
will store that ID in its cached config for subsequent use.

The Cache itself can now store a server-designated connection-id for
one-time use.  Clients can query the cache to see whether it stores a
server-designated connection-ID.  If so, the client can consume the
ID.  Subsequent queries will indicate that there is no
server-designated connection-ID until another stateless reject is
returned.

Note:  Currently, the cached config state only stores one
server-designated connection ID at a time.

Merge internal change: 91419089
https://codereview.chromium.org/1116463004/

Adding EXPECT_CALLs to prevent gMock warnings. Replacing scoped_ptr with
unique_ptr. Lowering some DLOG(INFO)s to DVLOG(1).

n/a (Tests and debug logging only.)

Merge internal change: 91343963
https://codereview.chromium.org/1117483002/

Remove unused argument TransmissionType from QUIC's ShouldGeneratePacket.
No functional change.

Merge internal change: 91300968
https://codereview.chromium.org/1113553003/

Reorganize the packet validity check code.  Add checks to not create
connections for packets with large seq. nos. or truncated conn. IDs.

Reorganize the packet validity checks to make the packet sequence number
accessible to the dispatcher's packet-classification logic: Put most of
the logic in OnUnauthenticatedHeader, which is called after the sequence
number is decoded.

Add validity checks and tests of the validity checks.

Merge internal change: 91299299
https://codereview.chromium.org/1110243002/

Setting QoS for UDP proxy backends (two machine canary on internal servers).

Merge internal change: 91293512
https://codereview.chromium.org/1109793006/

R=rch@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#327851}
71 files changed:
net/BUILD.gn
net/net.gyp
net/quic/congestion_control/cubic.cc
net/quic/congestion_control/hybrid_slow_start.cc
net/quic/congestion_control/hybrid_slow_start.h
net/quic/congestion_control/tcp_cubic_bytes_sender.cc
net/quic/congestion_control/tcp_cubic_sender.cc
net/quic/crypto/crypto_handshake_message.cc
net/quic/crypto/crypto_protocol.h
net/quic/crypto/crypto_server_test.cc
net/quic/crypto/quic_crypto_client_config.cc
net/quic/crypto/quic_crypto_client_config.h
net/quic/crypto/quic_crypto_client_config_test.cc
net/quic/crypto/quic_crypto_server_config.cc
net/quic/crypto/quic_crypto_server_config.h
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_server_stream.cc
net/quic/quic_flags.cc
net/quic/quic_flags.h
net/quic/quic_framer.cc
net/quic/quic_framer.h
net/quic/quic_framer_test.cc
net/quic/quic_headers_stream.cc
net/quic/quic_headers_stream.h
net/quic/quic_headers_stream_test.cc
net/quic/quic_packet_creator.cc
net/quic/quic_packet_creator.h
net/quic/quic_packet_creator_test.cc
net/quic/quic_packet_generator.cc
net/quic/quic_packet_generator.h
net/quic/quic_packet_generator_test.cc
net/quic/quic_packet_reader.h
net/quic/quic_protocol.cc
net/quic/quic_protocol.h
net/quic/quic_protocol_test.cc
net/quic/quic_session.cc
net/quic/quic_session_test.cc
net/quic/quic_utils.cc
net/quic/spdy_utils.cc
net/quic/spdy_utils.h
net/quic/test_tools/quic_test_packet_maker.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.cc
net/tools/quic/quic_client.h
net/tools/quic/quic_client_bin.cc
net/tools/quic/quic_client_session_test.cc
net/tools/quic/quic_client_test.cc
net/tools/quic/quic_dispatcher.cc
net/tools/quic/quic_dispatcher.h
net/tools/quic/quic_dispatcher_test.cc
net/tools/quic/quic_packet_reader.h
net/tools/quic/quic_server.h
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_spdy_client_stream.cc
net/tools/quic/quic_spdy_client_stream_test.cc
net/tools/quic/quic_spdy_server_stream_test.cc
net/tools/quic/quic_time_wait_list_manager_test.cc
net/tools/quic/spdy_balsa_utils.cc [moved from net/tools/quic/spdy_utils.cc with 94% similarity]
net/tools/quic/spdy_balsa_utils.h [moved from net/tools/quic/spdy_utils.h with 84% similarity]
net/tools/quic/test_tools/quic_server_peer.cc
net/tools/quic/test_tools/quic_server_peer.h
net/tools/quic/test_tools/quic_test_client.cc