summaryrefslogtreecommitdiffstats
path: root/net/http
diff options
context:
space:
mode:
Diffstat (limited to 'net/http')
-rw-r--r--net/http/http_network_transaction.cc34
-rw-r--r--net/http/http_network_transaction_unittest.cc11
2 files changed, 3 insertions, 42 deletions
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
index f970384..300482f 100644
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -579,44 +579,14 @@ int HttpNetworkTransaction::DoResolveProxyComplete(int result) {
pac_request_ = NULL;
- if (result != OK) {
- DLOG(ERROR) << "Failed to resolve proxy: " << result;
- // Fall-back to direct when there were runtime errors in the PAC script,
- // or some other failure with the settings.
- proxy_info_.UseDirect();
- }
+ if (result != OK)
+ return result;
// Remove unsupported proxies from the list.
proxy_info_.RemoveProxiesWithoutScheme(
ProxyServer::SCHEME_DIRECT | ProxyServer::SCHEME_HTTP |
ProxyServer::SCHEME_SOCKS4 | ProxyServer::SCHEME_SOCKS5);
- // There are four possible outcomes of having run the ProxyService:
- // (1) The ProxyService decided we should connect through a proxy.
- // (2) The ProxyService decided we should direct-connect.
- // (3) The ProxyService decided we should give up, as there are no more
- // proxies to try (this is more likely to happen during
- // ReconsiderProxyAfterError()).
- // (4) The ProxyService failed (which can happen if the PAC script
- // we were configured with threw a runtime exception).
- //
- // It is important that we fail the connection in case (3) rather than
- // falling-back to a direct connection, since sending traffic through
- // a proxy may be integral to the user's privacy/security model.
- //
- // For example if a user had configured traffic to go through the TOR
- // anonymizing proxy to protect their privacy, it would be bad if we
- // silently fell-back to direct connect if the proxy server were to
- // become unreachable.
- //
- // In case (4) it is less obvious what the right thing to do is. On the
- // one hand, for consistency it would be natural to hard-fail as well.
- // However, both Firefox 3.5 and Internet Explorer 8 will silently fall-back
- // to DIRECT in this case, so we will do the same for compatibility.
- //
- // For more information, see:
- // http://www.chromium.org/developers/design-documents/proxy-settings-fallback
-
if (proxy_info_.is_empty()) {
// No proxies/direct to choose from. This happens when we don't support any
// of the proxies in the returned list.
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 4a71ab1..3b977bd 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -31,17 +31,8 @@
//-----------------------------------------------------------------------------
-// TODO(eroman): Add a regression test for http://crbug.com/32316 -- when the
-// proxy service returns an error, we should fallback to DIRECT instead of
-// failing with ERR_NO_SUPPORTED_PROXIES.
-
namespace net {
-// Create a proxy service which fails on all requests (falls back to direct).
-ProxyService* CreateNullProxyService() {
- return ProxyService::CreateNull();
-}
-
// Helper to manage the lifetimes of the dependencies for a
// HttpNetworkTransaction.
class SessionDependencies {
@@ -49,7 +40,7 @@ class SessionDependencies {
// Default set of dependencies -- "null" proxy service.
SessionDependencies()
: host_resolver(new MockHostResolver),
- proxy_service(CreateNullProxyService()),
+ proxy_service(ProxyService::CreateNull()),
ssl_config_service(new SSLConfigServiceDefaults),
flip_session_pool(new FlipSessionPool) {}