| Index: net/http/http_proxy_client_socket_pool.cc
|
| diff --git a/net/http/http_proxy_client_socket_pool.cc b/net/http/http_proxy_client_socket_pool.cc
|
| index 783c10f0ea82342484cdf79e2432a1de85b68cc8..d5508443c82f0c3d61cb028da88173e86c25569d 100644
|
| --- a/net/http/http_proxy_client_socket_pool.cc
|
| +++ b/net/http/http_proxy_client_socket_pool.cc
|
| @@ -24,7 +24,7 @@ HttpProxySocketParams::HttpProxySocketParams(
|
| : tcp_params_(proxy_server),
|
| request_url_(request_url),
|
| endpoint_(endpoint),
|
| - session_(session),
|
| + session_(tunnel ? session : NULL),
|
| tunnel_(tunnel) {
|
| }
|
|
|
| @@ -146,7 +146,14 @@ int HttpProxyConnectJob::DoHttpProxyConnect() {
|
| proxy_server,
|
| params_->session(),
|
| params_->tunnel()));
|
| - return socket_->Connect(&callback_);
|
| + int result = socket_->Connect(&callback_);
|
| +
|
| + // Clear the circular reference to HttpNetworkSession (|params_| reference
|
| + // HttpNetworkSession, which reference HttpProxyClientSocketPool, which
|
| + // references |this|) here because it is safe to do so now but not at other
|
| + // points. This may cancel this ConnectJob.
|
| + params_ = NULL;
|
| + return result;
|
| }
|
|
|
| int HttpProxyConnectJob::DoHttpProxyConnectComplete(int result) {
|
|
|