summaryrefslogtreecommitdiffstats
path: root/net/proxy/proxy_service.cc
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-05 04:08:37 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-05 04:08:37 +0000
commitdded3e20a923ac15142e49e62286f195f05e5a07 (patch)
treefd1d240b10d80bbbc3915e47d462587dc1ebfa02 /net/proxy/proxy_service.cc
parent31a5d88dfdf8eba77aa2d0a185d90f2f64f4f427 (diff)
downloadchromium_src-dded3e20a923ac15142e49e62286f195f05e5a07.zip
chromium_src-dded3e20a923ac15142e49e62286f195f05e5a07.tar.gz
chromium_src-dded3e20a923ac15142e49e62286f195f05e5a07.tar.bz2
Add unittest for r37566 (on PAC failure, should fallback to DIRECT).
To make it more testable, I had to move the fallback code in question from HttpNetworkTransaction to ProxyService. Although I think this is a better fit for that code anway, so it should be an overall readability improvement. BUG=32316 TEST=ProxyServiceTest.ProxyFallback_BadConfig, ProxyServiceTest.ProxyResolverFails Review URL: http://codereview.chromium.org/556087 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38177 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/proxy/proxy_service.cc')
-rw-r--r--net/proxy/proxy_service.cc18
1 files changed, 14 insertions, 4 deletions
diff --git a/net/proxy/proxy_service.cc b/net/proxy/proxy_service.cc
index fb607ec..90fd297 100644
--- a/net/proxy/proxy_service.cc
+++ b/net/proxy/proxy_service.cc
@@ -492,13 +492,23 @@ int ProxyService::DidFinishResolvingProxy(ProxyInfo* result,
load_log,
std::string("Resolved proxy list: ") + result->ToPacString());
}
+ result->DeprioritizeBadProxies(proxy_retry_info_);
} else {
+ LoadLog::AddStringLiteral(
+ load_log,
+ "Got an error from proxy resolver, falling-back to DIRECT.");
LoadLog::AddErrorCode(load_log, result_code);
- }
- // Clean up the results list.
- if (result_code == OK)
- result->DeprioritizeBadProxies(proxy_retry_info_);
+ // Fall-back to direct when the proxy resolver fails. This corresponds
+ // with a javascript runtime error in the PAC script.
+ //
+ // This implicit fall-back to direct matches Firefox 3.5 and
+ // Internet Explorer 8. For more information, see:
+ //
+ // http://www.chromium.org/developers/design-documents/proxy-settings-fallback
+ result->UseDirect();
+ result_code = OK;
+ }
LoadLog::EndEvent(load_log, LoadLog::TYPE_PROXY_SERVICE);
return result_code;