| 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) {
 | 
| 
 |