Index: net/http/http_network_layer.cc |
=================================================================== |
--- net/http/http_network_layer.cc (revision 3703) |
+++ net/http/http_network_layer.cc (working copy) |
@@ -46,18 +46,16 @@ |
HttpNetworkLayer::HttpNetworkLayer(const ProxyInfo* pi) |
: suspended_(false) { |
- ProxyResolver* proxy_resolver; |
if (pi) { |
- proxy_resolver = new ProxyResolverFixed(*pi); |
+ proxy_resolver_.reset(new ProxyResolverFixed(*pi)); |
} else { |
#if defined(OS_WIN) |
- proxy_resolver = new ProxyResolverWinHttp(); |
+ proxy_resolver_.reset(new ProxyResolverWinHttp()); |
#else |
NOTIMPLEMENTED(); |
- proxy_resolver = new ProxyResolverNull(); |
+ proxy_resolver_.reset(new ProxyResolverNull()); |
#endif |
} |
- session_ = new HttpNetworkSession(proxy_resolver); |
} |
HttpNetworkLayer::~HttpNetworkLayer() { |
@@ -67,6 +65,9 @@ |
if (suspended_) |
return NULL; |
+ if (!session_) |
+ session_ = new HttpNetworkSession(proxy_resolver_.release()); |
+ |
return new HttpNetworkTransaction( |
session_, ClientSocketFactory::GetDefaultFactory()); |
} |
@@ -82,7 +83,7 @@ |
void HttpNetworkLayer::Suspend(bool suspend) { |
suspended_ = suspend; |
- if (suspend) |
+ if (suspend && session_) |
session_->connection_pool()->CloseIdleSockets(); |
} |