diff options
author | rtenneti <rtenneti@chromium.org> | 2016-03-21 13:26:57 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-21 20:27:47 +0000 |
commit | 8a2f463d3726f944f5ec279664b25118fd3ccf3c (patch) | |
tree | 9c2f8731b7618b5bb03dfce1f105e7f53a35dcda /net | |
parent | c96b751d4f1c02151b5e705d1fb216b06a864893 (diff) | |
download | chromium_src-8a2f463d3726f944f5ec279664b25118fd3ccf3c.zip chromium_src-8a2f463d3726f944f5ec279664b25118fd3ccf3c.tar.gz chromium_src-8a2f463d3726f944f5ec279664b25118fd3ccf3c.tar.bz2 |
QUIC - extend origin-to-force-quic-on command line option to accept list
of host_ports for which QUIC will be forced. A TCP job wouldn't even be
started for these origins.
R=rch@chromium.org, eroman@chromium.org,
Review URL: https://codereview.chromium.org/1808303005
Cr-Commit-Position: refs/heads/master@{#382370}
Diffstat (limited to 'net')
-rw-r--r-- | net/http/http_network_session.cc | 9 | ||||
-rw-r--r-- | net/http/http_network_session.h | 5 | ||||
-rw-r--r-- | net/http/http_stream_factory_impl_job.cc | 2 | ||||
-rw-r--r-- | net/quic/quic_end_to_end_unittest.cc | 4 | ||||
-rw-r--r-- | net/quic/quic_network_transaction_unittest.cc | 16 |
5 files changed, 21 insertions, 15 deletions
diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc index 053509a..748f27e 100644 --- a/net/http/http_network_session.cc +++ b/net/http/http_network_session.cc @@ -317,8 +317,13 @@ scoped_ptr<base::Value> HttpNetworkSession::QuicInfoToValue() const { connection_options->AppendString("'" + QuicUtils::TagToString(*it) + "'"); } dict->Set("connection_options", std::move(connection_options)); - dict->SetString("origin_to_force_quic_on", - params_.origin_to_force_quic_on.ToString()); + + scoped_ptr<base::ListValue> origins_to_force_quic_on(new base::ListValue); + for (const auto& origin : params_.origins_to_force_quic_on) { + origins_to_force_quic_on->AppendString("'" + origin.ToString() + "'"); + } + dict->Set("origins_to_force_quic_on", std::move(origins_to_force_quic_on)); + dict->SetDouble("load_server_info_timeout_srtt_multiplier", params_.quic_load_server_info_timeout_srtt_multiplier); dict->SetBoolean("enable_connection_racing", diff --git a/net/http/http_network_session.h b/net/http/http_network_session.h index a636308..c779539 100644 --- a/net/http/http_network_session.h +++ b/net/http/http_network_session.h @@ -149,8 +149,9 @@ class NET_EXPORT HttpNetworkSession // Maximum number of server configs that are to be stored in // HttpServerProperties, instead of the disk cache. size_t quic_max_server_configs_stored_in_properties; - // If not empty, QUIC will be used for all connections to this origin. - HostPortPair origin_to_force_quic_on; + // If not empty, QUIC will be used for all connections to the set of + // origins in |origins_to_force_quic_on|. + std::set<HostPortPair> origins_to_force_quic_on; // Source of time for QUIC connections. Will be owned by QuicStreamFactory. QuicClock* quic_clock; // Source of entropy for QUIC connections. diff --git a/net/http/http_stream_factory_impl_job.cc b/net/http/http_stream_factory_impl_job.cc index f4cc08c..24f888b 100644 --- a/net/http/http_stream_factory_impl_job.cc +++ b/net/http/http_stream_factory_impl_job.cc @@ -899,7 +899,7 @@ int HttpStreamFactoryImpl::Job::DoResolveProxyComplete(int result) { bool HttpStreamFactoryImpl::Job::ShouldForceQuic() const { return session_->params().enable_quic && - session_->params().origin_to_force_quic_on.Equals(server_) && + ContainsKey(session_->params().origins_to_force_quic_on, server_) && proxy_info_.is_direct() && origin_url_.SchemeIs("https"); } diff --git a/net/quic/quic_end_to_end_unittest.cc b/net/quic/quic_end_to_end_unittest.cc index 9ec8731..7441c7f 100644 --- a/net/quic/quic_end_to_end_unittest.cc +++ b/net/quic/quic_end_to_end_unittest.cc @@ -159,8 +159,8 @@ class QuicEndToEndTest : public ::testing::TestWithParam<TestParams> { // To simplify the test, and avoid the race with the HTTP request, we force // QUIC for these requests. - params_.origin_to_force_quic_on = - HostPortPair::FromString("test.example.com:443"); + params_.origins_to_force_quic_on.insert( + HostPortPair::FromString("test.example.com:443")); transaction_factory_.reset(new TestTransactionFactory(params_)); } diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc index d4098c5..6b174cc 100644 --- a/net/quic/quic_network_transaction_unittest.cc +++ b/net/quic/quic_network_transaction_unittest.cc @@ -621,8 +621,8 @@ INSTANTIATE_TEST_CASE_P(Version, ::testing::ValuesIn(QuicSupportedVersions())); TEST_P(QuicNetworkTransactionTest, ForceQuic) { - params_.origin_to_force_quic_on = - HostPortPair::FromString("mail.example.org:443"); + params_.origins_to_force_quic_on.insert( + HostPortPair::FromString("mail.example.org:443")); MockQuicData mock_quic_data; mock_quic_data.AddWrite( @@ -809,8 +809,8 @@ TEST_P(QuicNetworkTransactionTest, AlternativeServicesDifferentHost) { } TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { - params_.origin_to_force_quic_on = - HostPortPair::FromString("mail.example.org:443"); + params_.origins_to_force_quic_on.insert( + HostPortPair::FromString("mail.example.org:443")); MockQuicData mock_quic_data1; mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); @@ -841,8 +841,8 @@ TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { // Attempt to "force" quic on 443, which will not be honored. - params_.origin_to_force_quic_on = - HostPortPair::FromString("www.google.com:443"); + params_.origins_to_force_quic_on.insert( + HostPortPair::FromString("www.google.com:443")); MockRead http_reads[] = { MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), @@ -2236,8 +2236,8 @@ TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) { } TEST_P(QuicNetworkTransactionTest, QuicUpload) { - params_.origin_to_force_quic_on = - HostPortPair::FromString("mail.example.org:443"); + params_.origins_to_force_quic_on.insert( + HostPortPair::FromString("mail.example.org:443")); MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; |