Index: net/proxy/proxy_list.cc |
diff --git a/net/proxy/proxy_list.cc b/net/proxy/proxy_list.cc |
index 2adea29fba2cfca8edd04ca334f6bb1a315aab23..f88200bfbbac9ec7db1ed9bab3af95b0f2377367 100644 |
--- a/net/proxy/proxy_list.cc |
+++ b/net/proxy/proxy_list.cc |
@@ -146,6 +146,7 @@ base::ListValue* ProxyList::ToValue() const { |
} |
bool ProxyList::Fallback(ProxyRetryInfoMap* proxy_retry_info, |
+ const int net_error, |
const BoundNetLog& net_log) { |
// TODO(eroman): It would be good if instead of removing failed proxies |
@@ -171,6 +172,7 @@ bool ProxyList::Fallback(ProxyRetryInfoMap* proxy_retry_info, |
TimeDelta::FromMinutes(5), |
true, |
ProxyServer(), |
+ net_error, |
net_log); |
// Remove this proxy from our list. |
@@ -182,6 +184,7 @@ void ProxyList::AddProxyToRetryList(ProxyRetryInfoMap* proxy_retry_info, |
base::TimeDelta retry_delay, |
bool try_while_bad, |
const ProxyServer& proxy_to_retry, |
+ const int net_error, |
const BoundNetLog& net_log) const { |
// Mark this proxy as bad. |
std::string proxy_key = proxy_to_retry.ToURI(); |
@@ -195,6 +198,7 @@ void ProxyList::AddProxyToRetryList(ProxyRetryInfoMap* proxy_retry_info, |
retry_info.current_delay = retry_delay; |
retry_info.bad_until = TimeTicks().Now() + retry_info.current_delay; |
retry_info.try_while_bad = try_while_bad; |
+ retry_info.net_error = net_error; |
(*proxy_retry_info)[proxy_key] = retry_info; |
} |
net_log.AddEvent(NetLog::TYPE_PROXY_LIST_FALLBACK, |
@@ -206,6 +210,7 @@ void ProxyList::UpdateRetryInfoOnFallback( |
base::TimeDelta retry_delay, |
bool reconsider, |
const ProxyServer& another_proxy_to_bypass, |
+ const int net_error, |
const BoundNetLog& net_log) const { |
DCHECK(retry_delay != base::TimeDelta()); |
@@ -215,14 +220,22 @@ void ProxyList::UpdateRetryInfoOnFallback( |
} |
if (!proxies_[0].is_direct()) { |
- AddProxyToRetryList(proxy_retry_info, retry_delay, reconsider, proxies_[0], |
+ AddProxyToRetryList(proxy_retry_info, |
+ retry_delay, |
+ reconsider, |
+ proxies_[0], |
+ net_error, |
net_log); |
// If an additional proxy to bypass is specified, add it to the retry map |
// as well. |
if (another_proxy_to_bypass.is_valid()) { |
- AddProxyToRetryList(proxy_retry_info, retry_delay, reconsider, |
- another_proxy_to_bypass, net_log); |
+ AddProxyToRetryList(proxy_retry_info, |
+ retry_delay, |
+ reconsider, |
+ another_proxy_to_bypass, |
+ net_error, |
+ net_log); |
} |
} |
} |