Index: net/http/http_server_properties_impl.cc |
diff --git a/net/http/http_server_properties_impl.cc b/net/http/http_server_properties_impl.cc |
index a8bc04a685980d1f5adb6d1ec778cdbc58f77968..d048e98871acba04071ccae2c0c81d51d494bc26 100644 |
--- a/net/http/http_server_properties_impl.cc |
+++ b/net/http/http_server_properties_impl.cc |
@@ -227,17 +227,10 @@ bool HttpServerPropertiesImpl::HasAlternateProtocol( |
const HostPortPair& server) { |
if (g_forced_alternate_protocol) |
return true; |
- AlternateProtocolMap::const_iterator it = alternate_protocol_map_.Get(server); |
- 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 HasAlternateProtocol(canonical->second); |
+ AlternateProtocolMap::const_iterator it = |
+ GetAlternateProtocolIterator(server); |
+ return it != alternate_protocol_map_.end() && |
+ it->second.probability >= alternate_protocol_probability_threshold_; |
} |
std::string HttpServerPropertiesImpl::GetCanonicalSuffix( |
@@ -258,16 +251,11 @@ HttpServerPropertiesImpl::GetAlternateProtocol( |
const HostPortPair& server) { |
DCHECK(HasAlternateProtocol(server)); |
- // First check the map. |
- AlternateProtocolMap::iterator it = alternate_protocol_map_.Get(server); |
+ AlternateProtocolMap::const_iterator it = |
+ GetAlternateProtocolIterator(server); |
if (it != alternate_protocol_map_.end()) |
return it->second; |
- // Next check the canonical host. |
- CanonicalHostMap::const_iterator canonical_host = GetCanonicalHost(server); |
- if (canonical_host != canonical_host_to_origin_map_.end()) |
- return alternate_protocol_map_.Get(canonical_host->second)->second; |
- |
// We must be forcing an alternate. |
DCHECK(g_forced_alternate_protocol); |
return *g_forced_alternate_protocol; |
@@ -282,9 +270,10 @@ void HttpServerPropertiesImpl::SetAlternateProtocol( |
AlternateProtocolInfo alternate(alternate_port, |
alternate_protocol, |
alternate_probability); |
- if (HasAlternateProtocol(server)) { |
- const AlternateProtocolInfo existing_alternate = |
- GetAlternateProtocol(server); |
+ AlternateProtocolMap::const_iterator it = |
+ GetAlternateProtocolIterator(server); |
+ if (it != alternate_protocol_map_.end()) { |
+ const AlternateProtocolInfo existing_alternate = it->second; |
if (existing_alternate.is_broken) { |
DVLOG(1) << "Ignore alternate protocol since it's known to be broken."; |
@@ -478,6 +467,20 @@ void HttpServerPropertiesImpl::SetAlternateProtocolProbabilityThreshold( |
alternate_protocol_probability_threshold_ = threshold; |
} |
+AlternateProtocolMap::const_iterator |
+HttpServerPropertiesImpl::GetAlternateProtocolIterator( |
+ const HostPortPair& server) { |
+ AlternateProtocolMap::const_iterator it = alternate_protocol_map_.Get(server); |
+ if (it != alternate_protocol_map_.end()) |
+ return it; |
+ |
+ CanonicalHostMap::const_iterator canonical = GetCanonicalHost(server); |
+ if (canonical != canonical_host_to_origin_map_.end()) |
+ return alternate_protocol_map_.Get(canonical->second); |
+ |
+ return alternate_protocol_map_.end(); |
+} |
+ |
HttpServerPropertiesImpl::CanonicalHostMap::const_iterator |
HttpServerPropertiesImpl::GetCanonicalHost(HostPortPair server) const { |
for (size_t i = 0; i < canonical_suffixes_.size(); ++i) { |