diff options
author | rch <rch@chromium.org> | 2014-12-01 15:23:39 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-01 23:24:39 +0000 |
commit | 77f87735cbbcc50ce6b89bb7cd37f22fa1c21a30 (patch) | |
tree | 82077bbf718fde136048243260b669bad59bcdda /net | |
parent | a615e9c5e04dc5ffe13512d448e4a94b7107a102 (diff) | |
download | chromium_src-77f87735cbbcc50ce6b89bb7cd37f22fa1c21a30.zip chromium_src-77f87735cbbcc50ce6b89bb7cd37f22fa1c21a30.tar.gz chromium_src-77f87735cbbcc50ce6b89bb7cd37f22fa1c21a30.tar.bz2 |
Fix a bug in HttpServerPropertiesImpl::HasAlternateProtocol
where Alternate-Protcol probability was not respected for
canonical servers.
BUG=437911
Review URL: https://codereview.chromium.org/768213002
Cr-Commit-Position: refs/heads/master@{#306288}
Diffstat (limited to 'net')
-rw-r--r-- | net/http/http_server_properties_impl.cc | 12 | ||||
-rw-r--r-- | net/http/http_server_properties_impl_unittest.cc | 30 |
2 files changed, 38 insertions, 4 deletions
diff --git a/net/http/http_server_properties_impl.cc b/net/http/http_server_properties_impl.cc index 1bf541b..477a68f 100644 --- a/net/http/http_server_properties_impl.cc +++ b/net/http/http_server_properties_impl.cc @@ -204,12 +204,16 @@ bool HttpServerPropertiesImpl::HasAlternateProtocol( if (g_forced_alternate_protocol) return true; AlternateProtocolMap::const_iterator it = alternate_protocol_map_.Get(server); - if (it != alternate_protocol_map_.end() && - it->second.probability >= alternate_protocol_probability_threshold_) { - return true; + if (it != alternate_protocol_map_.end()) + return it->second.probability >= alternate_protocol_probability_threshold_; + + auto canonical = GetCanonicalHost(server); + if (canonical == canonical_host_to_origin_map_.end() || + canonical->second.Equals(server)) { + return false; } - return GetCanonicalHost(server) != canonical_host_to_origin_map_.end(); + return HasAlternateProtocol(canonical->second); } std::string HttpServerPropertiesImpl::GetCanonicalSuffix( diff --git a/net/http/http_server_properties_impl_unittest.cc b/net/http/http_server_properties_impl_unittest.cc index 3d1bacb..572b0fb 100644 --- a/net/http/http_server_properties_impl_unittest.cc +++ b/net/http/http_server_properties_impl_unittest.cc @@ -445,6 +445,36 @@ TEST_F(AlternateProtocolServerPropertiesTest, Canonical) { EXPECT_EQ(".c.youtube.com", impl_.GetCanonicalSuffix(canonical_port_pair)); } +TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBelowThreshold) { + impl_.SetAlternateProtocolProbabilityThreshold(0.02); + + HostPortPair test_host_port_pair("foo.c.youtube.com", 80); + HostPortPair canonical_port_pair("bar.c.youtube.com", 80); + AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.01); + + impl_.SetAlternateProtocol(canonical_port_pair, + canonical_protocol.port, + canonical_protocol.protocol, + canonical_protocol.probability); + EXPECT_FALSE(impl_.HasAlternateProtocol(canonical_port_pair)); + EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); +} + +TEST_F(AlternateProtocolServerPropertiesTest, CanonicalAboveThreshold) { + impl_.SetAlternateProtocolProbabilityThreshold(0.02); + + HostPortPair test_host_port_pair("foo.c.youtube.com", 80); + HostPortPair canonical_port_pair("bar.c.youtube.com", 80); + AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.03); + + impl_.SetAlternateProtocol(canonical_port_pair, + canonical_protocol.port, + canonical_protocol.protocol, + canonical_protocol.probability); + EXPECT_TRUE(impl_.HasAlternateProtocol(canonical_port_pair)); + EXPECT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair)); +} + TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) { HostPortPair test_host_port_pair("foo.c.youtube.com", 80); HostPortPair canonical_port_pair("bar.c.youtube.com", 80); |