OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/socket/ssl_client_socket_pool.h" | 5 #include "net/socket/ssl_client_socket_pool.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
11 #include "base/values.h" | 11 #include "base/values.h" |
12 #include "net/base/host_port_pair.h" | 12 #include "net/base/host_port_pair.h" |
13 #include "net/base/net_errors.h" | 13 #include "net/base/net_errors.h" |
14 #include "net/http/http_proxy_client_socket.h" | 14 #include "net/http/http_proxy_client_socket.h" |
15 #include "net/http/http_proxy_client_socket_pool.h" | 15 #include "net/http/http_proxy_client_socket_pool.h" |
16 #include "net/socket/client_socket_factory.h" | 16 #include "net/socket/client_socket_factory.h" |
17 #include "net/socket/client_socket_handle.h" | 17 #include "net/socket/client_socket_handle.h" |
18 #include "net/socket/socks_client_socket_pool.h" | 18 #include "net/socket/socks_client_socket_pool.h" |
19 #include "net/socket/ssl_client_socket.h" | 19 #include "net/socket/ssl_client_socket.h" |
20 #include "net/socket/transport_client_socket_pool.h" | 20 #include "net/socket/transport_client_socket_pool.h" |
21 #include "net/ssl/ssl_cert_request_info.h" | 21 #include "net/ssl/ssl_cert_request_info.h" |
22 | 22 |
23 namespace net { | 23 namespace net { |
24 | 24 |
| 25 scoped_refptr<SSLSocketParams> SSLSocketParams::CreateForDirectConnection( |
| 26 const scoped_refptr<TransportSocketParams>& transport_params, |
| 27 const HostPortPair& host_and_port, |
| 28 const SSLConfig& ssl_config, |
| 29 int load_flags, |
| 30 bool force_spdy_over_ssl, |
| 31 bool want_spdy_over_npn) |
| 32 { |
| 33 return make_scoped_refptr(new SSLSocketParams( |
| 34 transport_params, |
| 35 NULL, |
| 36 NULL, |
| 37 ProxyServer::SCHEME_DIRECT, |
| 38 host_and_port, |
| 39 ssl_config, |
| 40 load_flags, |
| 41 force_spdy_over_ssl, |
| 42 want_spdy_over_npn, |
| 43 transport_params->ignore_limits() |
| 44 )); |
| 45 } |
| 46 |
| 47 scoped_refptr<SSLSocketParams> SSLSocketParams::CreateForHttpProxy( |
| 48 const scoped_refptr<HttpProxySocketParams>& http_proxy_params, |
| 49 ProxyServer::Scheme proxy, |
| 50 const HostPortPair& host_and_port, |
| 51 const SSLConfig& ssl_config, |
| 52 int load_flags, |
| 53 bool force_spdy_over_ssl, |
| 54 bool want_spdy_over_npn) { |
| 55 DCHECK(proxy == ProxyServer::SCHEME_HTTP || |
| 56 proxy == ProxyServer::SCHEME_HTTPS); |
| 57 |
| 58 return make_scoped_refptr(new SSLSocketParams( |
| 59 NULL, |
| 60 NULL, |
| 61 http_proxy_params, |
| 62 proxy, |
| 63 host_and_port, |
| 64 ssl_config, |
| 65 load_flags, |
| 66 force_spdy_over_ssl, |
| 67 want_spdy_over_npn, |
| 68 http_proxy_params->ignore_limits() |
| 69 )); |
| 70 } |
| 71 |
| 72 scoped_refptr<SSLSocketParams> SSLSocketParams::CreateForSocksProxy( |
| 73 const scoped_refptr<SOCKSSocketParams>& socks_params, |
| 74 ProxyServer::Scheme proxy, |
| 75 const HostPortPair& host_and_port, |
| 76 const SSLConfig& ssl_config, |
| 77 int load_flags, |
| 78 bool force_spdy_over_ssl, |
| 79 bool want_spdy_over_npn) { |
| 80 DCHECK(proxy == ProxyServer::SCHEME_SOCKS4 || |
| 81 proxy == ProxyServer::SCHEME_SOCKS5); |
| 82 |
| 83 return make_scoped_refptr(new SSLSocketParams( |
| 84 NULL, |
| 85 socks_params, |
| 86 NULL, |
| 87 proxy, |
| 88 host_and_port, |
| 89 ssl_config, |
| 90 load_flags, |
| 91 force_spdy_over_ssl, |
| 92 want_spdy_over_npn, |
| 93 socks_params->ignore_limits() |
| 94 )); |
| 95 } |
| 96 |
25 SSLSocketParams::SSLSocketParams( | 97 SSLSocketParams::SSLSocketParams( |
26 const scoped_refptr<TransportSocketParams>& transport_params, | 98 const scoped_refptr<TransportSocketParams>& transport_params, |
27 const scoped_refptr<SOCKSSocketParams>& socks_params, | 99 const scoped_refptr<SOCKSSocketParams>& socks_params, |
28 const scoped_refptr<HttpProxySocketParams>& http_proxy_params, | 100 const scoped_refptr<HttpProxySocketParams>& http_proxy_params, |
29 ProxyServer::Scheme proxy, | 101 ProxyServer::Scheme proxy, |
30 const HostPortPair& host_and_port, | 102 const HostPortPair& host_and_port, |
31 const SSLConfig& ssl_config, | 103 const SSLConfig& ssl_config, |
32 int load_flags, | 104 int load_flags, |
33 bool force_spdy_over_ssl, | 105 bool force_spdy_over_ssl, |
34 bool want_spdy_over_npn) | 106 bool want_spdy_over_npn, |
| 107 bool ignore_limits) |
35 : transport_params_(transport_params), | 108 : transport_params_(transport_params), |
36 http_proxy_params_(http_proxy_params), | 109 http_proxy_params_(http_proxy_params), |
37 socks_params_(socks_params), | 110 socks_params_(socks_params), |
38 proxy_(proxy), | 111 proxy_(proxy), |
39 host_and_port_(host_and_port), | 112 host_and_port_(host_and_port), |
40 ssl_config_(ssl_config), | 113 ssl_config_(ssl_config), |
41 load_flags_(load_flags), | 114 load_flags_(load_flags), |
42 force_spdy_over_ssl_(force_spdy_over_ssl), | 115 force_spdy_over_ssl_(force_spdy_over_ssl), |
43 want_spdy_over_npn_(want_spdy_over_npn), | 116 want_spdy_over_npn_(want_spdy_over_npn), |
44 ignore_limits_(false) { | 117 ignore_limits_(ignore_limits) { |
45 switch (proxy_) { | 118 switch (proxy_) { |
46 case ProxyServer::SCHEME_DIRECT: | 119 case ProxyServer::SCHEME_DIRECT: |
47 DCHECK(transport_params_.get() != NULL); | 120 DCHECK(transport_params_.get() != NULL); |
48 DCHECK(http_proxy_params_.get() == NULL); | 121 DCHECK(http_proxy_params_.get() == NULL); |
49 DCHECK(socks_params_.get() == NULL); | 122 DCHECK(socks_params_.get() == NULL); |
50 ignore_limits_ = transport_params_->ignore_limits(); | |
51 break; | 123 break; |
52 case ProxyServer::SCHEME_HTTP: | 124 case ProxyServer::SCHEME_HTTP: |
53 case ProxyServer::SCHEME_HTTPS: | 125 case ProxyServer::SCHEME_HTTPS: |
54 DCHECK(transport_params_.get() == NULL); | 126 DCHECK(transport_params_.get() == NULL); |
55 DCHECK(http_proxy_params_.get() != NULL); | 127 DCHECK(http_proxy_params_.get() != NULL); |
56 DCHECK(socks_params_.get() == NULL); | 128 DCHECK(socks_params_.get() == NULL); |
57 ignore_limits_ = http_proxy_params_->ignore_limits(); | |
58 break; | 129 break; |
59 case ProxyServer::SCHEME_SOCKS4: | 130 case ProxyServer::SCHEME_SOCKS4: |
60 case ProxyServer::SCHEME_SOCKS5: | 131 case ProxyServer::SCHEME_SOCKS5: |
61 DCHECK(transport_params_.get() == NULL); | 132 DCHECK(transport_params_.get() == NULL); |
62 DCHECK(http_proxy_params_.get() == NULL); | 133 DCHECK(http_proxy_params_.get() == NULL); |
63 DCHECK(socks_params_.get() != NULL); | 134 DCHECK(socks_params_.get() != NULL); |
64 ignore_limits_ = socks_params_->ignore_limits(); | |
65 break; | 135 break; |
66 default: | 136 default: |
67 LOG(DFATAL) << "unknown proxy type"; | 137 LOG(DFATAL) << "unknown proxy type"; |
68 break; | 138 break; |
69 } | 139 } |
70 } | 140 } |
71 | 141 |
72 SSLSocketParams::~SSLSocketParams() {} | 142 SSLSocketParams::~SSLSocketParams() {} |
73 | 143 |
74 // Timeout for the SSL handshake portion of the connect. | 144 // Timeout for the SSL handshake portion of the connect. |
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 FlushWithError(ERR_NETWORK_CHANGED); | 692 FlushWithError(ERR_NETWORK_CHANGED); |
623 } | 693 } |
624 | 694 |
625 bool SSLClientSocketPool::CloseOneIdleConnection() { | 695 bool SSLClientSocketPool::CloseOneIdleConnection() { |
626 if (base_.CloseOneIdleSocket()) | 696 if (base_.CloseOneIdleSocket()) |
627 return true; | 697 return true; |
628 return base_.CloseOneIdleConnectionInLayeredPool(); | 698 return base_.CloseOneIdleConnectionInLayeredPool(); |
629 } | 699 } |
630 | 700 |
631 } // namespace net | 701 } // namespace net |
OLD | NEW |