Land Recent QUIC Changes.
commit7652bf3120ec2e16f0083a715dfaec5b5fdffc68
authorrtenneti <rtenneti@chromium.org>
Mon, 5 Jan 2015 18:51:07 +0000 (5 10:51 -0800)
committerCommit bot <commit-bot@chromium.org>
Mon, 5 Jan 2015 18:52:32 +0000 (5 18:52 +0000)
tree9112af408fde4eb094ce661b9fb4a94fd2f1ce11
parent0a69defef6c4de84db795a6d7ba0067c315250ef
Land Recent QUIC Changes.

Test tidyup. Remove some blank lines, add comments.

Merge internal change: 82513767
https://codereview.chromium.org/798783005/

Rename of a constant, otherwise doesn't touch prod code.

Set initial flow control windows to sensible values for client (10 MB)
and server (1 MB session, 64 KB stream). Running with the 16 KB default
has caused problems in loadtests, and for external people running QUIC
performance tests. It's not fair to have a public client/server crippled
by the small default values.

Merge internal change: 82509991
https://codereview.chromium.org/832553002/

Adds RTT change notifier to QUIC's NetworkChangeVisitor, to enable
delaying of FEC packet. This CL makes no changes to FEC behavior.

Merge internal change: 82480364
https://codereview.chromium.org/827143002/

If no min_rtt or srtt measurement is available, then set these to
initial_rtt in QuicConnection::GetStats.

Protected with FLAGS_quic_use_initial_rtt_for_stats

These fields (min_rtt, srtt) are initially zero, and are used to
populate the frontline info header rtt/srtt fields. With this change,
a 0RTT QUIC request results in these header fields being populated.

Merge internal change: 82363110
https://codereview.chromium.org/827113002/

Move creation/deletion of the QuicAckNotifier into the PacketGenerator.
Not flag protected.

Merge internal change: 82356073
https://codereview.chromium.org/829823002/

Fix QUIC's pacing sender so it can pace at rates faster than 1 packet
per configured alarm granularity.

Merge internal change: 82332014
https://codereview.chromium.org/806663005/

Don't try to create a QUIC stream frame with no data and no FIN.
Protected by ENABLEd FLAGS_quic_empty_data_no_fin_early_return.

I *suspect* that a call to SendStreamData with empty data + !FIN is the
cause of the AckNotifier crash in b/18594622 but I can't quite figure
out how it could happen. However this seems like a reasonable early
return to add in any case.

Without this new early return a QuicAckNotifier will be created,
attached to an (empty) stream frame in the packet creator, stored by the
AckNotifierManager when the packet is serialized, and then promptly
deleted because no data was consumed (later in SendStreamData). Now,
when an ACK comes in for the packet, the AckNofitierManager will try to
inform the QuicAckNotifier which no longer exists.

The new test fails under ASAN without the new return.

Merge internal change: 82328921
https://codereview.chromium.org/785113003/

More cleanups of the QUIC source address token tests.

Cleanup based on code review changes for
  https://codereview.chromium.org/809903003/
  Merge internal change: 82257112

Merge internal change: 82283430
https://codereview.chromium.org/815133003/

R=rch@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#309926}
30 files changed:
net/quic/congestion_control/pacing_sender.cc
net/quic/congestion_control/pacing_sender.h
net/quic/congestion_control/pacing_sender_test.cc
net/quic/congestion_control/rtt_stats.h
net/quic/crypto/quic_crypto_server_config_test.cc
net/quic/quic_config.cc
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_flags.cc
net/quic/quic_flags.h
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.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.cc
net/quic/quic_session.cc
net/quic/quic_session_test.cc
net/quic/reliable_quic_stream.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_server.cc