diff options
Diffstat (limited to 'net/http/http_network_layer.cc')
-rw-r--r-- | net/http/http_network_layer.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/net/http/http_network_layer.cc b/net/http/http_network_layer.cc index 1107884..1aaa226 100644 --- a/net/http/http_network_layer.cc +++ b/net/http/http_network_layer.cc @@ -46,18 +46,16 @@ void HttpNetworkLayer::UseWinHttp(bool value) { 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 @@ HttpTransaction* HttpNetworkLayer::CreateTransaction() { if (suspended_) return NULL; + if (!session_) + session_ = new HttpNetworkSession(proxy_resolver_.release()); + return new HttpNetworkTransaction( session_, ClientSocketFactory::GetDefaultFactory()); } @@ -82,7 +83,7 @@ AuthCache* HttpNetworkLayer::GetAuthCache() { void HttpNetworkLayer::Suspend(bool suspend) { suspended_ = suspend; - if (suspend) + if (suspend && session_) session_->connection_pool()->CloseIdleSockets(); } |