Landing Recent QUIC changes until 3:01 PM, Feb 15, 2019 UTC-5
Update feature flags
Server session should start first.
The server session should be started by the time client session is
started.
Merge internal change: 234173322
https://chromium-review.googlesource.com/c/1476209/
Implement a QuartcDispatcher and use it for the server perspective.
Creates a QuartcDispatcher, which implements QuicDispatcher. QuartcDispatcher
has three differences from QuicDispatcher:
- It owns all configuration objects, so that the caller does not have to keep
track of them (in particular, QuicConfig, crypto config, and version manager)
- It has a delegate, which it calls whenever a new QuartcSession is created
- It connects to a QuartcPacketWriter and receives transport callbacks when the
writer becomes writable or the transport receives data
Since QuartcDispatcher owns the crypto config and packet writer, the
QuartcServerSession no longer owns either of these objects. In fact,
QuartcServerSession no longer interacts with the packet writer directly--it
receives calls from the dispatcher when it can write or when data is received.
The QuartcEndpoint now has two different implementations. The client
implementation remains the same, but the server implementation uses
QuartcDispatcher to wait for a CHLO before creating a session. Since the
perspective is not known until Connect is called, QuartcEndpoint has two
internal implementations and selects one when Connect is called. This might be
worth cleaning up in a future cl, as there's no particular reason the caller
can't select an appropriate subclass when creating QuartcEndpoint.
QuartcFactory is refactored slightly to move the meat of setup into static
helper functions. These are called by the factory itself when the endpoint uses
it for the client perspective, or by the dispatcher when it is used for the
server perspective. This is also ripe for future cleanup, as there's no
particular reason to have the QuartcFactory object any more. It's client-side
functionality should move into the client implementation of endpoint, while the
helpers can move to a new utility file.
However, delaying cleanup minimizes the delta for this change, as it avoids
changes at the application layer and significant portions of factory code can be
left in place.
Merge internal change: 234041835
https://chromium-review.googlesource.com/c/1476205/
Clean up QUIC endianness code.
Now that QUIC v35 has been removed, all QUIC versions use
NETWORK_BYTE_ORDER so QuicFramer no longer needs an endianess(). In
addition, all QuicDataReaders and QuicDataWriters can be
NETWORK_BYTE_ORDER, except those in QUIC Crypto code and the QUIC
NullEncrypter/Decrypter. So make a version of the constructor for the
Writer and Reader which does not tale the endianness and instead uses
NETWORK_BYTE_ORDER. Use this everywhere possible.
Merge internal change: 234030501
https://chromium-review.googlesource.com/c/1476200/
Add QpackDecodedHeadersAccumulator.
QpackDecodedHeadersAccumulator calls QpackDecoder's factory method to
create a QpackProgressiveDecoder that it owns, relays wire data for
decoding, and accumulates decoded header fields in a QuicHeaderList.
Merge internal change: 233973516
https://chromium-review.googlesource.com/c/1476199/
Remove QUIC version 35!
Also removes the TransportVersion argument to QuicEncrypter and
QuicDecrypter Also removes the SPSH connection option
Merge internal change: 233859145
https://chromium-review.googlesource.com/c/1476194/
Change QuartcSessionTest to use QuartcEndpoint instead of QuartcFactory.
QuartcFactory creates sessions synchronously, and this is not compatible
with the model used by QuicDispatcher. QuartcEndpoint creates sessions
asynchronously. Changing everything to use QuartcEndpoint will make
future changes to support QuicDispatcher invisible to callers.
Merge internal change: 233816298
https://chromium-review.googlesource.com/c/1476142/
Change QuartcSessionConfig::pre_shared_key from QuicStringPiece to QuicString.
Using a QuicStringPiece exposes QuartcEndpoint to use-after-free issues
when it stores the config and uses it later during async session
creation.
Merge internal change: 233769074
https://chromium-review.googlesource.com/c/1476141/
Add a flag count for FLAGS_quic_reloadable_flag_quic_fix_config_rotation
Merge internal change: 233741064
https://chromium-review.googlesource.com/c/1476139/
Refactor QuartcSession to inject crypto configs. Required for dispatcher.
Currently, the QuartcSession creates and owns its own client or server
crypto config. In the near future, the server-perspective session will
be created by a QuicDispatcher (which performs the server half of
version negotiation). The dispatcher holds the server crypto config
(and helpers), so these must be created outside the session.
QuartcFactory now creates crypto configs and passes them to the session.
The session is split into a QuartcServerSession and a
QuartcClientSession, which take different dependencies based on their
role in the crypto handshake. The client session only needs the client
crypto config, while the server session needs the server config, a cert
cache, and a crypto stream helper.
For now, the cert cache and crypto stream helper are owned by the
QuartcFactory (which also implements QuicConnectionHelperInterface, and
hence must be kept alive anyway). In the future, these helpers will be
owned by the dispatcher (and the factory will go away).
Merge internal change: 233653995
https://chromium-review.googlesource.com/c/1476138/
Move creation of crypto configs into helper functions and specify PSK at setup.
Since crypto configs will be owned by the dispatcher/endpoint in the
future, it does not make sense to create them in QuartcSession. This
change moves the code for creating crypto configs into separate helper
functions. A future change will inject the crypto configs into
QuartcSession instead of calling these helpers in the constructor.
The PSK is now specified in QuartcSessionConfig instead of the unused
unique_remote_server_id. Since the PSK is part of the crypto config,
which won't be owned by the session, it doesn't make sense to set it
through the session.
Merge internal change: 233650743
https://chromium-review.googlesource.com/c/1476137/
Move Quartc crypto helpers into their own file.
The proof verifier, proof source, and crypto server stream helper need
to be moved out of QuartcSession in order to support use of the
QuicDispatcher. The QuicDispatcher needs pointers to the server crypto
config and crypto server stream helper. The proof source and proof
verifier are owned by the server and client crypto configs,
respectively. Since the dispatcher creates sessions, none of these can
be owned by the session.
Moving these helpers into their own file is the first step of
refactoring required to remove them from the session. A follow-up cl
will change ownership.
Merge internal change: 233638226
https://chromium-review.googlesource.com/c/1476136/
In QUIC, consider receiving unencrypted data as QUIC_PEER_BUG.
Merge internal change: 233629199
https://chromium-review.googlesource.com/c/1476135/
Deprecate FLAGS_quic_reloadable_flag_quic_faster_detect_loss.
Merge internal change: 233605499
https://chromium-review.googlesource.com/c/1476131/
Add VersionUsesQpack() helper function and DCHECKs.
Add VersionUsesQpack() helper function to quic_versions.h as a shorthand
instead of comparing directly to QUIC_VERSION_99. Also add DCHECKs to
QuicSpdySession QPACK encoder and decoder accessors. (These members are
nullptr unless using QPACK.)
Merge internal change: 233467975
https://chromium-review.googlesource.com/c/1476106/
Add flag count for quic_no_client_conn_ver_negotiation.
Merge internal change: 233466695
https://chromium-review.googlesource.com/c/1476101/
Add default action for some mock methods in QuicSimpleServerSessionTest and QuicSimpleServerStreamTest to simplify expectations.
Also add some more specific argument matchers.
Merge internal change: 233167637
https://chromium-review.googlesource.com/c/1476100/
[email protected]
Change-Id: Id6de2635abf45435c0e40cbfc689d069597c7161
Reviewed-on: https://chromium-review.googlesource.com/c/1476232
Commit-Queue: Victor Vasiliev <[email protected]>
Reviewed-by: Ryan Hamilton <[email protected]>
Cr-Commit-Position: refs/heads/master@{#633397}
diff --git a/net/quic/crypto/proof_verifier_chromium_test.cc b/net/quic/crypto/proof_verifier_chromium_test.cc
index b3ce7ca2..f740d59 100644
--- a/net/quic/crypto/proof_verifier_chromium_test.cc
+++ b/net/quic/crypto/proof_verifier_chromium_test.cc
@@ -155,7 +155,7 @@
base::FilePath());
std::string signature;
source.GetProof(quic::QuicSocketAddress(), kTestHostname, kTestConfig,
- quic::QUIC_VERSION_35, kTestChloHash,
+ quic::QUIC_VERSION_39, kTestChloHash,
std::make_unique<SignatureSaver>(&signature));
return signature;
}
@@ -211,7 +211,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_FAILURE, status);
@@ -231,7 +231,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, ct::GetSCTListForTesting(), kTestEmptySCT,
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_FAILURE, status);
@@ -251,7 +251,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, ct::GetSCTListWithInvalidSCT(), kTestEmptySCT,
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_FAILURE, status);
@@ -269,7 +269,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, kTestConfig, verify_context_.get(),
&error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_FAILURE, status);
@@ -299,7 +299,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_SUCCESS, status);
@@ -335,7 +335,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_SUCCESS, status);
@@ -377,7 +377,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_SUCCESS, status);
@@ -423,7 +423,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_SUCCESS, status);
@@ -466,7 +466,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_FAILURE, status);
@@ -499,7 +499,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_FAILURE, status);
@@ -532,7 +532,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_FAILURE, status);
@@ -571,7 +571,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_SUCCESS, status);
@@ -617,7 +617,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_FAILURE, status);
@@ -669,7 +669,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_FAILURE, status);
@@ -720,7 +720,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_SUCCESS, status);
@@ -739,7 +739,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_SUCCESS, status);
@@ -777,7 +777,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_SUCCESS, status);
@@ -823,7 +823,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_FAILURE, status);
@@ -867,7 +867,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_SUCCESS, status);
@@ -888,7 +888,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
quic::QuicAsyncStatus status = proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
ASSERT_EQ(quic::QUIC_SUCCESS, status);
@@ -932,7 +932,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
@@ -974,7 +974,7 @@
std::unique_ptr<DummyProofVerifierCallback> callback(
new DummyProofVerifierCallback);
proof_verifier.VerifyProof(
- kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_35,
+ kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39,
kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(),
verify_context_.get(), &error_details_, &details_, std::move(callback));
diff --git a/net/quic/mock_decrypter.cc b/net/quic/mock_decrypter.cc
index 717797b..86e5e26 100644
--- a/net/quic/mock_decrypter.cc
+++ b/net/quic/mock_decrypter.cc
@@ -39,8 +39,7 @@
return true;
}
-bool MockDecrypter::DecryptPacket(QuicTransportVersion version,
- uint64_t /*packet_number*/,
+bool MockDecrypter::DecryptPacket(uint64_t /*packet_number*/,
QuicStringPiece associated_data,
QuicStringPiece ciphertext,
char* output,
diff --git a/net/quic/mock_decrypter.h b/net/quic/mock_decrypter.h
index 0466a49..57642da 100644
--- a/net/quic/mock_decrypter.h
+++ b/net/quic/mock_decrypter.h
@@ -33,8 +33,7 @@
bool SetPreliminaryKey(quic::QuicStringPiece key) override;
bool SetDiversificationNonce(
const quic::DiversificationNonce& nonce) override;
- bool DecryptPacket(quic::QuicTransportVersion version,
- uint64_t packet_number,
+ bool DecryptPacket(uint64_t packet_number,
quic::QuicStringPiece associated_data,
quic::QuicStringPiece ciphertext,
char* output,
diff --git a/net/quic/mock_encrypter.cc b/net/quic/mock_encrypter.cc
index 333b3e4..97c9f9d2 100644
--- a/net/quic/mock_encrypter.cc
+++ b/net/quic/mock_encrypter.cc
@@ -29,8 +29,7 @@
return iv.empty();
}
-bool MockEncrypter::EncryptPacket(QuicTransportVersion version,
- uint64_t /*packet_number*/,
+bool MockEncrypter::EncryptPacket(uint64_t /*packet_number*/,
QuicStringPiece associated_data,
QuicStringPiece plaintext,
char* output,
diff --git a/net/quic/mock_encrypter.h b/net/quic/mock_encrypter.h
index 133a751..7547327 100644
--- a/net/quic/mock_encrypter.h
+++ b/net/quic/mock_encrypter.h
@@ -28,8 +28,7 @@
bool SetKey(quic::QuicStringPiece key) override;
bool SetNoncePrefix(quic::QuicStringPiece nonce_prefix) override;
bool SetIV(quic::QuicStringPiece iv) override;
- bool EncryptPacket(quic::QuicTransportVersion version,
- uint64_t packet_number,
+ bool EncryptPacket(uint64_t packet_number,
quic::QuicStringPiece associated_data,
quic::QuicStringPiece plaintext,
char* output,
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h
index 4c3a40c..afb0a3e0 100644
--- a/net/quic/quic_flags_list.h
+++ b/net/quic/quic_flags_list.h
@@ -241,7 +241,7 @@
// If true, QuicSpdyStream::WritevBody() will convert iovs into QuicMemSliceSpan
// and call WriteMemSlices instead.
-QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_call_write_mem_slices, false)
+QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_call_write_mem_slices, true)
// If true, enables the BBS4 and BBS5 connection options, which reduce BBR's
// pacing rate in STARTUP as more losses occur as a fraction of CWND.
@@ -256,7 +256,7 @@
// opinion about whether their packet writers are blocked.
QUIC_FLAG(bool,
FLAGS_quic_restart_flag_quic_check_blocked_writer_for_blockage,
- false)
+ true)
// If true, for QUIC V44, if a server connection is post handshake and has no
// termination packets, add it to time wait list with
@@ -271,7 +271,7 @@
QUIC_FLAG(
bool,
FLAGS_quic_reloadable_flag_quic_connection_do_not_add_to_write_blocked_list_if_disconnected,
- false)
+ true)
// Changes internal in-memory representation of QUIC connection IDs to network
// byte order.
@@ -304,7 +304,7 @@
// ack decimation with reordering.
QUIC_FLAG(bool,
FLAGS_quic_reloadable_flag_quic_keep_ack_decimation_reordering,
- false)
+ true)
// If true, log leaf cert subject name into warning log.
QUIC_FLAG(bool,
@@ -320,11 +320,11 @@
// If true, QuicCryptoServerConfig will correctly rotate configs based on
// primary time.
-QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_fix_config_rotation, false)
+QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_fix_config_rotation, true)
// If true, use numeric_limits<uint64_t>::max() to represent uninitialized
// packet number.
-QUIC_FLAG(bool, FLAGS_quic_restart_flag_quic_uint64max_uninitialized_pn, false)
+QUIC_FLAG(bool, FLAGS_quic_restart_flag_quic_uint64max_uninitialized_pn, true)
// If true, Set is_current_packet_connectivity_probing_ to false in the end
// of QuicConnection::ProcessUdpPacket.
diff --git a/net/quic/quic_http_stream.cc b/net/quic/quic_http_stream.cc
index 59a81fe..1be12cc1 100644
--- a/net/quic/quic_http_stream.cc
+++ b/net/quic/quic_http_stream.cc
@@ -81,8 +81,6 @@
switch (quic_version) {
case quic::QUIC_VERSION_UNSUPPORTED:
return HttpResponseInfo::CONNECTION_INFO_QUIC_UNKNOWN_VERSION;
- case quic::QUIC_VERSION_35:
- return HttpResponseInfo::CONNECTION_INFO_QUIC_35;
case quic::QUIC_VERSION_39:
return HttpResponseInfo::CONNECTION_INFO_QUIC_39;
case quic::QUIC_VERSION_43:
diff --git a/net/quic/quic_http_utils_test.cc b/net/quic/quic_http_utils_test.cc
index e9f2746..137e1c1 100644
--- a/net/quic/quic_http_utils_test.cc
+++ b/net/quic/quic_http_utils_test.cc
@@ -39,7 +39,7 @@
TEST(QuicHttpUtilsTest, FilterSupportedAltSvcVersions) {
quic::QuicTransportVersionVector supported_versions = {
- quic::QUIC_VERSION_35, quic::QUIC_VERSION_39, quic::QUIC_VERSION_44};
+ quic::QUIC_VERSION_46, quic::QUIC_VERSION_39, quic::QUIC_VERSION_44};
std::vector<uint32_t> alt_svc_versions_google = {quic::QUIC_VERSION_44,
quic::QUIC_VERSION_43};
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
index 1dcf73d..f1728a8 100644
--- a/net/quic/quic_stream_factory.cc
+++ b/net/quic/quic_stream_factory.cc
@@ -1797,8 +1797,7 @@
config.SetInitialStreamFlowControlWindowToSend(kQuicStreamMaxRecvWindowSize);
config.SetBytesForConnectionIdToSend(0);
ConfigureInitialRttEstimate(server_id, &config);
- if (quic_version > quic::QUIC_VERSION_35 &&
- quic_version < quic::QUIC_VERSION_44 &&
+ if (quic_version < quic::QUIC_VERSION_44 &&
!config.HasClientSentConnectionOption(quic::kNSTP,
quic::Perspective::IS_CLIENT)) {
// Enable the no stop waiting frames connection option by default.
diff --git a/net/quic/quic_test_packet_maker.cc b/net/quic/quic_test_packet_maker.cc
index 89a85d0e..f89e979 100644
--- a/net/quic/quic_test_packet_maker.cc
+++ b/net/quic/quic_test_packet_maker.cc
@@ -177,13 +177,6 @@
frames.push_back(quic::QuicFrame(&ack));
DVLOG(1) << "Adding frame: " << frames.back();
- quic::QuicStopWaitingFrame stop_waiting;
- if (version_ == quic::QUIC_VERSION_35) {
- stop_waiting.least_unacked = quic::QuicPacketNumber(least_unacked);
- frames.push_back(quic::QuicFrame(&stop_waiting));
- DVLOG(1) << "Adding frame: " << frames.back();
- }
-
frames.push_back(quic::QuicFrame(quic::QuicPingFrame()));
DVLOG(1) << "Adding frame: " << frames.back();
@@ -373,13 +366,6 @@
frames.push_back(quic::QuicFrame(&ack));
DVLOG(1) << "Adding frame: " << frames.back();
- quic::QuicStopWaitingFrame stop_waiting;
- if (version_ == quic::QUIC_VERSION_35) {
- stop_waiting.least_unacked = quic::QuicPacketNumber(least_unacked);
- frames.push_back(quic::QuicFrame(&stop_waiting));
- DVLOG(1) << "Adding frame: " << frames.back();
- }
-
quic::QuicRstStreamFrame rst(1, stream_id, error_code, bytes_written);
frames.push_back(quic::QuicFrame(&rst));
DVLOG(1) << "Adding frame: " << frames.back();
@@ -445,13 +431,6 @@
frames.push_back(quic::QuicFrame(&ack));
DVLOG(1) << "Adding frame: " << frames.back();
- quic::QuicStopWaitingFrame stop_waiting;
- if (version_ == quic::QUIC_VERSION_35) {
- stop_waiting.least_unacked = quic::QuicPacketNumber(least_unacked);
- frames.push_back(quic::QuicFrame(&stop_waiting));
- DVLOG(1) << "Adding frame: " << frames.back();
- }
-
quic::QuicConnectionCloseFrame close;
close.error_code = quic_error;
close.error_details = quic_error_details;
@@ -497,13 +476,6 @@
frames.push_back(quic::QuicFrame(&ack));
DVLOG(1) << "Adding frame: " << frames.back();
- quic::QuicStopWaitingFrame stop_waiting;
- if (version_ == quic::QUIC_VERSION_35) {
- stop_waiting.least_unacked = quic::QuicPacketNumber(least_unacked);
- frames.push_back(quic::QuicFrame(&stop_waiting));
- DVLOG(1) << "Adding frame: " << frames.back();
- }
-
quic::QuicConnectionCloseFrame close;
close.error_code = quic_error;
close.error_details = quic_error_details;
@@ -631,13 +603,6 @@
frames.push_back(ack_frame);
DVLOG(1) << "Adding frame: " << frames.back();
- quic::QuicStopWaitingFrame stop_waiting;
- if (version_ == quic::QUIC_VERSION_35) {
- stop_waiting.least_unacked = quic::QuicPacketNumber(least_unacked);
- frames.push_back(quic::QuicFrame(&stop_waiting));
- DVLOG(1) << "Adding frame: " << frames.back();
- }
-
std::unique_ptr<quic::QuicPacket> packet(
quic::test::BuildUnsizedDataPacket(&framer, header, frames));
char buffer[quic::kMaxPacketSize];
@@ -711,13 +676,6 @@
frames.push_back(quic::QuicFrame(&ack));
DVLOG(1) << "Adding frame: " << frames.back();
- quic::QuicStopWaitingFrame stop_waiting;
- if (version_ == quic::QUIC_VERSION_35) {
- stop_waiting.least_unacked = quic::QuicPacketNumber(least_unacked);
- frames.push_back(quic::QuicFrame(&stop_waiting));
- DVLOG(1) << "Adding frame: " << frames.back();
- }
-
frames.push_back(
quic::QuicFrame(quic::QuicStreamFrame(stream_id, fin, offset, data)));
DVLOG(1) << "Adding frame: " << frames.back();
@@ -752,13 +710,6 @@
frames.push_back(quic::QuicFrame(&ack));
DVLOG(1) << "Adding frame: " << frames.back();
- quic::QuicStopWaitingFrame stop_waiting;
- if (version_ == quic::QUIC_VERSION_35) {
- stop_waiting.least_unacked = quic::QuicPacketNumber(least_unacked);
- frames.push_back(quic::QuicFrame(&stop_waiting));
- DVLOG(1) << "Adding frame: " << frames.back();
- }
-
for (size_t i = 0; i < data_writes.size(); ++i) {
bool is_fin = fin && (i == data_writes.size() - 1);
quic::QuicFrame quic_frame(quic::QuicStreamFrame(
@@ -1254,13 +1205,6 @@
frames.push_back(quic::QuicFrame(&ack));
DVLOG(1) << "Adding frame: " << frames.back();
- quic::QuicStopWaitingFrame stop_waiting;
- if (version_ == quic::QUIC_VERSION_35) {
- stop_waiting.least_unacked = quic::QuicPacketNumber(least_unacked);
- frames.push_back(quic::QuicFrame(&stop_waiting));
- DVLOG(1) << "Adding frame: " << frames.back();
- }
-
const bool exclusive = client_headers_include_h2_stream_dependency_;
quic::QuicStreamOffset header_offset = 0;
if (offset == nullptr) {