diff options
author | inferno@chromium.org <inferno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-28 19:20:08 +0000 |
---|---|---|
committer | inferno@chromium.org <inferno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-28 19:20:08 +0000 |
commit | ad9fdd46495bcd88e0ba268e80a0014ac3e4f834 (patch) | |
tree | bd0a7a820320f0e5d2d5f116103de97cee49341b | |
parent | 4525d2c01793bf2299921677f0d4b8c86bc888fe (diff) | |
download | chromium_src-ad9fdd46495bcd88e0ba268e80a0014ac3e4f834.zip chromium_src-ad9fdd46495bcd88e0ba268e80a0014ac3e4f834.tar.gz chromium_src-ad9fdd46495bcd88e0ba268e80a0014ac3e4f834.tar.bz2 |
Merge 50078 - Check proxy_info_.is_empty()
In case proxy_info_.is_empty(), we can't access proxy_info_.proxy_server()
or so.
BUG=46750
TEST=none
Review URL: http://codereview.chromium.org/2803010
TBR=ukai@chromium.org
Review URL: http://codereview.chromium.org/2845028
git-svn-id: svn://svn.chromium.org/chrome/branches/375/src@51015 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | net/socket_stream/socket_stream.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/net/socket_stream/socket_stream.cc b/net/socket_stream/socket_stream.cc index 8a78659..a1d3316 100644 --- a/net/socket_stream/socket_stream.cc +++ b/net/socket_stream/socket_stream.cc @@ -425,8 +425,6 @@ int SocketStream::DoResolveProxy() { } int SocketStream::DoResolveProxyComplete(int result) { - next_state_ = STATE_RESOLVE_HOST; - pac_request_ = NULL; if (result != OK) { LOG(ERROR) << "Failed to resolve proxy: " << result; @@ -450,12 +448,20 @@ int SocketStream::DoResolveProxyComplete(int result) { } } + 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. + return ERR_NO_SUPPORTED_PROXIES; + } + + next_state_ = STATE_RESOLVE_HOST; return OK; } int SocketStream::DoResolveHost() { next_state_ = STATE_RESOLVE_HOST_COMPLETE; + DCHECK(!proxy_info_.is_empty()); if (proxy_info_.is_direct()) proxy_mode_ = kDirectConnection; else if (proxy_info_.proxy_server().is_socks()) @@ -682,6 +688,7 @@ int SocketStream::DoReadTunnelHeadersComplete(int result) { result = HandleAuthChallenge(headers.get()); if (result == ERR_PROXY_AUTH_REQUESTED && auth_handler_.get() && delegate_) { + DCHECK(!proxy_info_.is_empty()); auth_info_ = new AuthChallengeInfo; auth_info_->is_proxy = true; auth_info_->host_and_port = @@ -711,6 +718,7 @@ int SocketStream::DoSOCKSConnect() { HostResolver::RequestInfo req_info(url_.HostNoBrackets(), url_.EffectiveIntPort()); + DCHECK(!proxy_info_.is_empty()); if (proxy_info_.proxy_server().scheme() == ProxyServer::SCHEME_SOCKS5) s = new SOCKS5ClientSocket(s, req_info); else @@ -844,6 +852,7 @@ int SocketStream::DoReadWrite(int result) { } GURL SocketStream::ProxyAuthOrigin() const { + DCHECK(!proxy_info_.is_empty()); return GURL("http://" + proxy_info_.proxy_server().host_and_port()); } |