Land Recent QUIC Changes.
commit5dafdb64232ed3881af003596611ae5a495a2bdc
authorrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Thu, 14 Nov 2013 01:24:26 +0000 (14 01:24 +0000)
committerrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Thu, 14 Nov 2013 01:24:26 +0000 (14 01:24 +0000)
treee52ac430a0cff2be1801d014b133bda1d865a8aa
parentd25da25f2164c74dd5561b22e3d9831a3dcaaf9e
Land Recent QUIC Changes.

Fixing a QUIC bug where public reset packets would only be sent for
null encrypted packets.

Merge internal change: 56125340

Implement TcpCubicSender::BandwidthEstimate to return CWND/SRTT, which
will be used as the basis for pacing.

Implements a currently unused method in the QUIC TCP implementation.

Merge internal change: 56109841

Add bandwidth limits and maximum packet queue size to the
PacketDroppingTestWriter for QUIC.

Merge internal change: 56104313

Change QUIC's TCP implementation to not reduce the congestion window
when multiple losses occur in a window.

Merge internal change: 56097813

Add flexibility to SimpleClient by exposing epoll_server(), fd() and
buffer_body() at the interface level. Affects tests only.

I need this for ustreamer load testing. The requirements there (like
slowing down the transfer) are divergent from internal server and it's
easier to implement them by talking to epoll directly.

Merge internal change: 56097002

Removing QUIC_VERSION_10 which had a longer NullEncryption hash length
of 16 bytes vs the new 12 bytes.

Merge internal change: 56033303

Change QUIC's  minimum congestion window for TCP to 2*MSS, matching
RFC2582.

Merge internal change: 55999043

Request from avd@ in review of cl/55013562

Merge QuicConnection SendStreamData methods.

Merge internal change: 55985552

Replacing StringPiece with IOVector in QUIC's read and write paths.
QuicConnection on below, QUIC now trafficks in only IOVectors.
QuicStreamFrame now holds frame data in an IOVector instead of a
StringPiece.

Merge internal change: 55838620

Change order of operations in
QuicCryptoServerConfig::EvaluateClientHello so that:
 - Local, syncrhonous operations can happen first.
 - Validating the client nonce against the strike register only
   happens when uniqueness must be established using the client
   nonce.
 - Server nonce is always used if it is present.
 - A repeated server nonce triggers a replay protection failure even
   if the client nonce is unique.

Resulting behavior is more correct:  we used to allow handshakes that
had both a server nonce and client nonce to be repeated twice.

Merge internal change: 55930987

QUIC - Minor cleanup of the code to match the internal code.

Merge internal change: 55929037

Increase the minimum CHLO size from 512 bytes to 1024 bytes. Pad an
inchoate CHLO to fill up a packet.

On the server side, enforce the old minimum CHLO size of 512 bytes so
we can support old clients.

Merge internal change: 55881305

R=rch@chromium.org

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@235006 0039d316-1c4b-4281-b951-d872f2087c98
71 files changed:
net/quic/congestion_control/fix_rate_sender.cc
net/quic/congestion_control/fix_rate_sender.h
net/quic/congestion_control/inter_arrival_sender.cc
net/quic/congestion_control/inter_arrival_sender.h
net/quic/congestion_control/inter_arrival_sender_test.cc
net/quic/congestion_control/quic_congestion_manager.cc
net/quic/congestion_control/send_algorithm_interface.h
net/quic/congestion_control/tcp_cubic_sender.cc
net/quic/congestion_control/tcp_cubic_sender.h
net/quic/congestion_control/tcp_cubic_sender_test.cc
net/quic/crypto/crypto_protocol.h
net/quic/crypto/null_decrypter.cc
net/quic/crypto/null_decrypter.h
net/quic/crypto/null_decrypter_test.cc
net/quic/crypto/null_encrypter.cc
net/quic/crypto/null_encrypter.h
net/quic/crypto/null_encrypter_test.cc
net/quic/crypto/quic_crypto_client_config.cc
net/quic/crypto/quic_crypto_server_config.cc
net/quic/crypto/quic_decrypter.cc
net/quic/crypto/quic_encrypter.cc
net/quic/quic_connection.cc
net/quic/quic_connection.h
net/quic/quic_connection_helper_test.cc
net/quic/quic_connection_logger.cc
net/quic/quic_connection_test.cc
net/quic/quic_crypto_client_stream.cc
net/quic/quic_crypto_server_stream_test.cc
net/quic/quic_data_writer.cc
net/quic/quic_data_writer.h
net/quic/quic_default_packet_writer.cc
net/quic/quic_framer.cc
net/quic/quic_framer_test.cc
net/quic/quic_http_stream_test.cc
net/quic/quic_network_transaction_unittest.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_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_stream_sequencer.cc
net/quic/quic_stream_sequencer_test.cc
net/quic/quic_utils.h
net/quic/reliable_quic_stream.cc
net/quic/reliable_quic_stream_test.cc
net/quic/test_tools/crypto_test_utils.cc
net/quic/test_tools/quic_test_utils.cc
net/quic/test_tools/quic_test_utils.h
net/quic/test_tools/simple_quic_framer.cc
net/tools/quic/end_to_end_test.cc
net/tools/quic/quic_default_packet_writer.cc
net/tools/quic/quic_default_packet_writer.h
net/tools/quic/quic_dispatcher_test.cc
net/tools/quic/quic_epoll_connection_helper_test.cc
net/tools/quic/quic_reliable_client_stream_test.cc
net/tools/quic/quic_server_session_test.cc
net/tools/quic/quic_spdy_server_stream_test.cc
net/tools/quic/quic_time_wait_list_manager.cc
net/tools/quic/quic_time_wait_list_manager.h
net/tools/quic/quic_time_wait_list_manager_test.cc
net/tools/quic/test_tools/packet_dropping_test_writer.cc
net/tools/quic/test_tools/packet_dropping_test_writer.h
net/tools/quic/test_tools/quic_test_client.cc
net/tools/quic/test_tools/quic_test_client.h
net/tools/quic/test_tools/quic_test_utils.cc