summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorrtenneti <rtenneti@chromium.org>2016-03-21 13:26:57 -0700
committerCommit bot <commit-bot@chromium.org>2016-03-21 20:27:47 +0000
commit8a2f463d3726f944f5ec279664b25118fd3ccf3c (patch)
tree9c2f8731b7618b5bb03dfce1f105e7f53a35dcda /net
parentc96b751d4f1c02151b5e705d1fb216b06a864893 (diff)
downloadchromium_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.cc9
-rw-r--r--net/http/http_network_session.h5
-rw-r--r--net/http/http_stream_factory_impl_job.cc2
-rw-r--r--net/quic/quic_end_to_end_unittest.cc4
-rw-r--r--net/quic/quic_network_transaction_unittest.cc16
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)};