OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/http/http_network_session.h" | 5 #include "net/http/http_network_session.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/stl_util-inl.h" | 10 #include "base/stl_util-inl.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 // http and SOCKS proxies. See http://crbug.com/12066 and | 29 // http and SOCKS proxies. See http://crbug.com/12066 and |
30 // http://crbug.com/44501 for details about proxy server connection limits. | 30 // http://crbug.com/44501 for details about proxy server connection limits. |
31 int g_max_sockets_per_proxy_server = 32; | 31 int g_max_sockets_per_proxy_server = 32; |
32 | 32 |
33 uint16 g_fixed_http_port = 0; | 33 uint16 g_fixed_http_port = 0; |
34 uint16 g_fixed_https_port = 0; | 34 uint16 g_fixed_https_port = 0; |
35 | 35 |
36 } // namespace | 36 } // namespace |
37 | 37 |
38 HttpNetworkSession::HttpNetworkSession( | 38 HttpNetworkSession::HttpNetworkSession( |
39 NetworkChangeNotifier* network_change_notifier, | |
40 HostResolver* host_resolver, | 39 HostResolver* host_resolver, |
41 ProxyService* proxy_service, | 40 ProxyService* proxy_service, |
42 ClientSocketFactory* client_socket_factory, | 41 ClientSocketFactory* client_socket_factory, |
43 SSLConfigService* ssl_config_service, | 42 SSLConfigService* ssl_config_service, |
44 SpdySessionPool* spdy_session_pool, | 43 SpdySessionPool* spdy_session_pool, |
45 HttpAuthHandlerFactory* http_auth_handler_factory, | 44 HttpAuthHandlerFactory* http_auth_handler_factory, |
46 HttpNetworkDelegate* network_delegate, | 45 HttpNetworkDelegate* network_delegate, |
47 NetLog* net_log) | 46 NetLog* net_log) |
48 : network_change_notifier_(network_change_notifier), | |
49 // TODO(vandebo) when we've completely converted to pools, the base TCP | 47 // TODO(vandebo) when we've completely converted to pools, the base TCP |
50 // pool name should get changed to TCP instead of Transport. | 48 // pool name should get changed to TCP instead of Transport. |
51 tcp_pool_histograms_(new ClientSocketPoolHistograms("Transport")), | 49 : tcp_pool_histograms_(new ClientSocketPoolHistograms("Transport")), |
52 http_proxy_pool_histograms_(new ClientSocketPoolHistograms("HTTPProxy")), | 50 http_proxy_pool_histograms_(new ClientSocketPoolHistograms("HTTPProxy")), |
53 tcp_for_socks_pool_histograms_( | 51 tcp_for_socks_pool_histograms_( |
54 new ClientSocketPoolHistograms("TCPforSOCKS")), | 52 new ClientSocketPoolHistograms("TCPforSOCKS")), |
55 socks_pool_histograms_(new ClientSocketPoolHistograms("SOCK")), | 53 socks_pool_histograms_(new ClientSocketPoolHistograms("SOCK")), |
56 tcp_socket_pool_(new TCPClientSocketPool( | 54 tcp_socket_pool_(new TCPClientSocketPool(g_max_sockets, |
57 g_max_sockets, g_max_sockets_per_group, tcp_pool_histograms_, | 55 g_max_sockets_per_group, tcp_pool_histograms_, host_resolver, |
58 host_resolver, client_socket_factory, network_change_notifier_, | 56 client_socket_factory, net_log)), |
59 net_log)), | |
60 socket_factory_(client_socket_factory), | 57 socket_factory_(client_socket_factory), |
61 host_resolver_(host_resolver), | 58 host_resolver_(host_resolver), |
62 proxy_service_(proxy_service), | 59 proxy_service_(proxy_service), |
63 ssl_config_service_(ssl_config_service), | 60 ssl_config_service_(ssl_config_service), |
64 spdy_session_pool_(spdy_session_pool), | 61 spdy_session_pool_(spdy_session_pool), |
65 http_auth_handler_factory_(http_auth_handler_factory), | 62 http_auth_handler_factory_(http_auth_handler_factory), |
66 network_delegate_(network_delegate), | 63 network_delegate_(network_delegate), |
67 net_log_(net_log) { | 64 net_log_(net_log) { |
68 DCHECK(proxy_service); | 65 DCHECK(proxy_service); |
69 DCHECK(ssl_config_service); | 66 DCHECK(ssl_config_service); |
70 } | 67 } |
71 | 68 |
72 HttpNetworkSession::~HttpNetworkSession() { | 69 HttpNetworkSession::~HttpNetworkSession() { |
73 } | 70 } |
74 | 71 |
75 const scoped_refptr<TCPClientSocketPool>& | 72 const scoped_refptr<TCPClientSocketPool>& |
76 HttpNetworkSession::GetSocketPoolForHTTPProxy(const HostPortPair& http_proxy) { | 73 HttpNetworkSession::GetSocketPoolForHTTPProxy(const HostPortPair& http_proxy) { |
77 HTTPProxySocketPoolMap::const_iterator it = | 74 HTTPProxySocketPoolMap::const_iterator it = |
78 http_proxy_socket_pool_.find(http_proxy); | 75 http_proxy_socket_pool_.find(http_proxy); |
79 if (it != http_proxy_socket_pool_.end()) | 76 if (it != http_proxy_socket_pool_.end()) |
80 return it->second; | 77 return it->second; |
81 | 78 |
82 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret = | 79 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret = |
83 http_proxy_socket_pool_.insert( | 80 http_proxy_socket_pool_.insert(std::make_pair(http_proxy, |
84 std::make_pair( | 81 new TCPClientSocketPool(g_max_sockets_per_proxy_server, |
85 http_proxy, | 82 g_max_sockets_per_group, http_proxy_pool_histograms_, |
86 new TCPClientSocketPool( | 83 host_resolver_, socket_factory_, net_log_))); |
87 g_max_sockets_per_proxy_server, g_max_sockets_per_group, | |
88 http_proxy_pool_histograms_, host_resolver_, socket_factory_, | |
89 network_change_notifier_, | |
90 net_log_))); | |
91 | 84 |
92 return ret.first->second; | 85 return ret.first->second; |
93 } | 86 } |
94 | 87 |
95 const scoped_refptr<SOCKSClientSocketPool>& | 88 const scoped_refptr<SOCKSClientSocketPool>& |
96 HttpNetworkSession::GetSocketPoolForSOCKSProxy( | 89 HttpNetworkSession::GetSocketPoolForSOCKSProxy( |
97 const HostPortPair& socks_proxy) { | 90 const HostPortPair& socks_proxy) { |
98 SOCKSSocketPoolMap::const_iterator it = socks_socket_pool_.find(socks_proxy); | 91 SOCKSSocketPoolMap::const_iterator it = socks_socket_pool_.find(socks_proxy); |
99 if (it != socks_socket_pool_.end()) | 92 if (it != socks_socket_pool_.end()) |
100 return it->second; | 93 return it->second; |
101 | 94 |
102 std::pair<SOCKSSocketPoolMap::iterator, bool> ret = | 95 std::pair<SOCKSSocketPoolMap::iterator, bool> ret = socks_socket_pool_.insert( |
103 socks_socket_pool_.insert( | 96 std::make_pair(socks_proxy, new SOCKSClientSocketPool( |
104 std::make_pair( | 97 g_max_sockets_per_proxy_server, g_max_sockets_per_group, |
105 socks_proxy, | 98 socks_pool_histograms_, host_resolver_, |
106 new SOCKSClientSocketPool( | 99 new TCPClientSocketPool(g_max_sockets_per_proxy_server, |
107 g_max_sockets_per_proxy_server, g_max_sockets_per_group, | 100 g_max_sockets_per_group, tcp_for_socks_pool_histograms_, |
108 socks_pool_histograms_, host_resolver_, | 101 host_resolver_, socket_factory_, net_log_), |
109 new TCPClientSocketPool(g_max_sockets_per_proxy_server, | 102 net_log_))); |
110 g_max_sockets_per_group, | |
111 tcp_for_socks_pool_histograms_, | |
112 host_resolver_, socket_factory_, | |
113 network_change_notifier_, | |
114 net_log_), | |
115 network_change_notifier_, net_log_))); | |
116 | 103 |
117 return ret.first->second; | 104 return ret.first->second; |
118 } | 105 } |
119 | 106 |
120 // static | 107 // static |
121 void HttpNetworkSession::set_max_sockets_per_group(int socket_count) { | 108 void HttpNetworkSession::set_max_sockets_per_group(int socket_count) { |
122 DCHECK_LT(0, socket_count); | 109 DCHECK_LT(0, socket_count); |
123 // The following is a sanity check... but we should NEVER be near this value. | 110 // The following is a sanity check... but we should NEVER be near this value. |
124 DCHECK_GT(100, socket_count); | 111 DCHECK_GT(100, socket_count); |
125 g_max_sockets_per_group = socket_count; | 112 g_max_sockets_per_group = socket_count; |
(...skipping 13 matching lines...) Expand all Loading... |
139 uint16 HttpNetworkSession::fixed_https_port() { | 126 uint16 HttpNetworkSession::fixed_https_port() { |
140 return g_fixed_https_port; | 127 return g_fixed_https_port; |
141 } | 128 } |
142 | 129 |
143 // static | 130 // static |
144 void HttpNetworkSession::set_fixed_https_port(uint16 port) { | 131 void HttpNetworkSession::set_fixed_https_port(uint16 port) { |
145 g_fixed_https_port = port; | 132 g_fixed_https_port = port; |
146 } | 133 } |
147 | 134 |
148 } // namespace net | 135 } // namespace net |
OLD | NEW |