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 b1b5cecbd2aeed8c306c6c39ad79dcd3456c689b..6ea3b86a37ecb1392a8540e8f4531eb68e6e95cb 100644 |
--- a/net/http/http_server_properties_impl.cc |
+++ b/net/http/http_server_properties_impl.cc |
@@ -33,6 +33,8 @@ const int kBrokenDelayMaxShift = 9; |
HttpServerPropertiesImpl::HttpServerPropertiesImpl() |
: spdy_servers_map_(SpdyServersMap::NO_AUTO_EVICT), |
alternative_service_map_(AlternativeServiceMap::NO_AUTO_EVICT), |
+ recently_broken_alternative_services_( |
+ RecentlyBrokenAlternativeServices::NO_AUTO_EVICT), |
server_network_stats_map_(ServerNetworkStatsMap::NO_AUTO_EVICT), |
quic_server_info_map_(QuicServerInfoMap::NO_AUTO_EVICT), |
max_server_configs_stored_in_properties_(kMaxQuicServersToPersist), |
@@ -454,8 +456,13 @@ void HttpServerPropertiesImpl::MarkAlternativeServiceBroken( |
LOG(DFATAL) << "Trying to mark unknown alternate protocol broken."; |
return; |
} |
- ++recently_broken_alternative_services_[alternative_service]; |
- int shift = recently_broken_alternative_services_[alternative_service] - 1; |
+ auto it = recently_broken_alternative_services_.Get(alternative_service); |
+ int shift = 0; |
+ if (it == recently_broken_alternative_services_.end()) { |
+ recently_broken_alternative_services_.Put(alternative_service, 1); |
+ } else { |
+ shift = it->second++; |
+ } |
if (shift > kBrokenDelayMaxShift) |
shift = kBrokenDelayMaxShift; |
base::TimeDelta delay = |
@@ -477,9 +484,10 @@ void HttpServerPropertiesImpl::MarkAlternativeServiceBroken( |
void HttpServerPropertiesImpl::MarkAlternativeServiceRecentlyBroken( |
const AlternativeService& alternative_service) { |
- if (!base::ContainsKey(recently_broken_alternative_services_, |
- alternative_service)) |
- recently_broken_alternative_services_[alternative_service] = 1; |
+ if (recently_broken_alternative_services_.Get(alternative_service) == |
+ recently_broken_alternative_services_.end()) { |
+ recently_broken_alternative_services_.Put(alternative_service, 1); |
+ } |
} |
bool HttpServerPropertiesImpl::IsAlternativeServiceBroken( |
@@ -493,8 +501,9 @@ bool HttpServerPropertiesImpl::WasAlternativeServiceRecentlyBroken( |
const AlternativeService& alternative_service) { |
if (alternative_service.protocol == kProtoUnknown) |
return false; |
- return base::ContainsKey(recently_broken_alternative_services_, |
- alternative_service); |
+ |
+ return recently_broken_alternative_services_.Get(alternative_service) != |
+ recently_broken_alternative_services_.end(); |
} |
void HttpServerPropertiesImpl::ConfirmAlternativeService( |
@@ -502,7 +511,10 @@ void HttpServerPropertiesImpl::ConfirmAlternativeService( |
if (alternative_service.protocol == kProtoUnknown) |
return; |
broken_alternative_services_.erase(alternative_service); |
- recently_broken_alternative_services_.erase(alternative_service); |
+ auto it = recently_broken_alternative_services_.Get(alternative_service); |
+ if (it != recently_broken_alternative_services_.end()) { |
+ recently_broken_alternative_services_.Erase(it); |
+ } |
} |
const AlternativeServiceMap& HttpServerPropertiesImpl::alternative_service_map() |