summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorinferno@chromium.org <inferno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-28 19:20:08 +0000
committerinferno@chromium.org <inferno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-28 19:20:08 +0000
commitad9fdd46495bcd88e0ba268e80a0014ac3e4f834 (patch)
treebd0a7a820320f0e5d2d5f116103de97cee49341b
parent4525d2c01793bf2299921677f0d4b8c86bc888fe (diff)
downloadchromium_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.cc13
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());
}