Index: net/proxy/proxy_list.cc |
diff --git a/net/proxy/proxy_list.cc b/net/proxy/proxy_list.cc |
index e53fe7ce3fdcb86be5da2d25ecf27895387e634b..99322450f135802d23b026c99f5efa5596922509 100644 |
--- a/net/proxy/proxy_list.cc |
+++ b/net/proxy/proxy_list.cc |
@@ -187,16 +187,13 @@ void ProxyList::AddProxyToRetryList(ProxyRetryInfoMap* proxy_retry_info, |
int net_error, |
const BoundNetLog& net_log) const { |
// Mark this proxy as bad. |
+ TimeTicks bad_until = TimeTicks::Now() + retry_delay; |
std::string proxy_key = proxy_to_retry.ToURI(); |
ProxyRetryInfoMap::iterator iter = proxy_retry_info->find(proxy_key); |
- if (iter != proxy_retry_info->end()) { |
- // TODO(nsylvain): This is not the first time we get this. We should |
- // double the retry time. Bug 997660. |
- iter->second.bad_until = TimeTicks::Now() + iter->second.current_delay; |
- } else { |
+ if (iter == proxy_retry_info->end() || bad_until > iter->second.bad_until) { |
ProxyRetryInfo retry_info; |
retry_info.current_delay = retry_delay; |
- retry_info.bad_until = TimeTicks().Now() + retry_info.current_delay; |
+ retry_info.bad_until = bad_until; |
retry_info.try_while_bad = try_while_bad; |
retry_info.net_error = net_error; |
(*proxy_retry_info)[proxy_key] = retry_info; |