diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-06 00:30:25 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-06 00:30:25 +0000 |
commit | 9172a9864a38e07f5f47d05ce31b0b8aa064b8b4 (patch) | |
tree | be1c1e136e61eba25b31db3b19bc41c87b633b3c /net/http/http_network_transaction.cc | |
parent | b96f37d0d4d2425175194bd6fb5dc4458d47971b (diff) | |
download | chromium_src-9172a9864a38e07f5f47d05ce31b0b8aa064b8b4.zip chromium_src-9172a9864a38e07f5f47d05ce31b0b8aa064b8b4.tar.gz chromium_src-9172a9864a38e07f5f47d05ce31b0b8aa064b8b4.tar.bz2 |
Fix crash on fallback in HttpNetworkTransaction::ReconsiderProxyAfterError().
If the socket doesn't exist, don't try to Disconnect() it.
BUG=http://www.crbug.com/13375
TEST=See bug for repro.
Review URL: http://codereview.chromium.org/119228
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17808 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_network_transaction.cc')
-rw-r--r-- | net/http/http_network_transaction.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc index f65cabc..5795011 100644 --- a/net/http/http_network_transaction.cc +++ b/net/http/http_network_transaction.cc @@ -1337,7 +1337,10 @@ int HttpNetworkTransaction::ReconsiderProxyAfterError(int error) { int rv = session_->proxy_service()->ReconsiderProxyAfterError( request_->url, &proxy_info_, &io_callback_, &pac_request_); if (rv == OK || rv == ERR_IO_PENDING) { - connection_.socket()->Disconnect(); + // If the error was during connection setup, there is no socket to + // disconnect. + if (connection_.socket()) + connection_.socket()->Disconnect(); connection_.Reset(); DCHECK(!request_headers_bytes_sent_); next_state_ = STATE_RESOLVE_PROXY_COMPLETE; |