Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(713)

Side by Side Diff: net/http/http_network_layer.cc

Issue 5386001: Cache certificate verification results in memory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Add unit tests. Ready for review. Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_layer.h" 5 #include "net/http/http_network_layer.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/string_split.h" 8 #include "base/string_split.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "net/http/http_network_session.h" 10 #include "net/http/http_network_session.h"
11 #include "net/http/http_network_transaction.h" 11 #include "net/http/http_network_transaction.h"
12 #include "net/socket/client_socket_factory.h" 12 #include "net/socket/client_socket_factory.h"
13 #include "net/spdy/spdy_framer.h" 13 #include "net/spdy/spdy_framer.h"
14 #include "net/spdy/spdy_session.h" 14 #include "net/spdy/spdy_session.h"
15 #include "net/spdy/spdy_session_pool.h" 15 #include "net/spdy/spdy_session_pool.h"
16 16
17 namespace net { 17 namespace net {
18 18
19 //----------------------------------------------------------------------------- 19 //-----------------------------------------------------------------------------
20 20
21 // static 21 // static
22 HttpTransactionFactory* HttpNetworkLayer::CreateFactory( 22 HttpTransactionFactory* HttpNetworkLayer::CreateFactory(
23 HostResolver* host_resolver, 23 HostResolver* host_resolver,
24 CertVerifier* cert_verifier,
24 DnsRRResolver* dnsrr_resolver, 25 DnsRRResolver* dnsrr_resolver,
25 DnsCertProvenanceChecker* dns_cert_checker, 26 DnsCertProvenanceChecker* dns_cert_checker,
26 SSLHostInfoFactory* ssl_host_info_factory, 27 SSLHostInfoFactory* ssl_host_info_factory,
27 ProxyService* proxy_service, 28 ProxyService* proxy_service,
28 SSLConfigService* ssl_config_service, 29 SSLConfigService* ssl_config_service,
29 HttpAuthHandlerFactory* http_auth_handler_factory, 30 HttpAuthHandlerFactory* http_auth_handler_factory,
30 HttpNetworkDelegate* network_delegate, 31 HttpNetworkDelegate* network_delegate,
31 NetLog* net_log) { 32 NetLog* net_log) {
32 DCHECK(proxy_service); 33 DCHECK(proxy_service);
33 34
34 return new HttpNetworkLayer(ClientSocketFactory::GetDefaultFactory(), 35 return new HttpNetworkLayer(ClientSocketFactory::GetDefaultFactory(),
35 host_resolver, dnsrr_resolver, 36 host_resolver, cert_verifier, dnsrr_resolver,
36 dns_cert_checker, 37 dns_cert_checker,
37 ssl_host_info_factory, proxy_service, 38 ssl_host_info_factory, proxy_service,
38 ssl_config_service, http_auth_handler_factory, 39 ssl_config_service, http_auth_handler_factory,
39 network_delegate, 40 network_delegate,
40 net_log); 41 net_log);
41 } 42 }
42 43
43 // static 44 // static
44 HttpTransactionFactory* HttpNetworkLayer::CreateFactory( 45 HttpTransactionFactory* HttpNetworkLayer::CreateFactory(
45 HttpNetworkSession* session) { 46 HttpNetworkSession* session) {
46 DCHECK(session); 47 DCHECK(session);
47 48
48 return new HttpNetworkLayer(session); 49 return new HttpNetworkLayer(session);
49 } 50 }
50 51
51 //----------------------------------------------------------------------------- 52 //-----------------------------------------------------------------------------
52 HttpNetworkLayer::HttpNetworkLayer( 53 HttpNetworkLayer::HttpNetworkLayer(
53 ClientSocketFactory* socket_factory, 54 ClientSocketFactory* socket_factory,
54 HostResolver* host_resolver, 55 HostResolver* host_resolver,
56 CertVerifier* cert_verifier,
55 DnsRRResolver* dnsrr_resolver, 57 DnsRRResolver* dnsrr_resolver,
56 DnsCertProvenanceChecker* dns_cert_checker, 58 DnsCertProvenanceChecker* dns_cert_checker,
57 SSLHostInfoFactory* ssl_host_info_factory, 59 SSLHostInfoFactory* ssl_host_info_factory,
58 ProxyService* proxy_service, 60 ProxyService* proxy_service,
59 SSLConfigService* ssl_config_service, 61 SSLConfigService* ssl_config_service,
60 HttpAuthHandlerFactory* http_auth_handler_factory, 62 HttpAuthHandlerFactory* http_auth_handler_factory,
61 HttpNetworkDelegate* network_delegate, 63 HttpNetworkDelegate* network_delegate,
62 NetLog* net_log) 64 NetLog* net_log)
63 : socket_factory_(socket_factory), 65 : socket_factory_(socket_factory),
64 host_resolver_(host_resolver), 66 host_resolver_(host_resolver),
67 cert_verifier_(cert_verifier),
65 dnsrr_resolver_(dnsrr_resolver), 68 dnsrr_resolver_(dnsrr_resolver),
66 dns_cert_checker_(dns_cert_checker), 69 dns_cert_checker_(dns_cert_checker),
67 ssl_host_info_factory_(ssl_host_info_factory), 70 ssl_host_info_factory_(ssl_host_info_factory),
68 proxy_service_(proxy_service), 71 proxy_service_(proxy_service),
69 ssl_config_service_(ssl_config_service), 72 ssl_config_service_(ssl_config_service),
70 session_(NULL), 73 session_(NULL),
71 spdy_session_pool_(NULL), 74 spdy_session_pool_(NULL),
72 http_auth_handler_factory_(http_auth_handler_factory), 75 http_auth_handler_factory_(http_auth_handler_factory),
73 network_delegate_(network_delegate), 76 network_delegate_(network_delegate),
74 net_log_(net_log), 77 net_log_(net_log),
75 suspended_(false) { 78 suspended_(false) {
76 DCHECK(proxy_service_); 79 DCHECK(proxy_service_);
77 DCHECK(ssl_config_service_.get()); 80 DCHECK(ssl_config_service_.get());
78 } 81 }
79 82
80 HttpNetworkLayer::HttpNetworkLayer( 83 HttpNetworkLayer::HttpNetworkLayer(
81 ClientSocketFactory* socket_factory, 84 ClientSocketFactory* socket_factory,
82 HostResolver* host_resolver, 85 HostResolver* host_resolver,
86 CertVerifier* cert_verifier,
83 DnsRRResolver* dnsrr_resolver, 87 DnsRRResolver* dnsrr_resolver,
84 DnsCertProvenanceChecker* dns_cert_checker, 88 DnsCertProvenanceChecker* dns_cert_checker,
85 SSLHostInfoFactory* ssl_host_info_factory, 89 SSLHostInfoFactory* ssl_host_info_factory,
86 ProxyService* proxy_service, 90 ProxyService* proxy_service,
87 SSLConfigService* ssl_config_service, 91 SSLConfigService* ssl_config_service,
88 SpdySessionPool* spdy_session_pool, 92 SpdySessionPool* spdy_session_pool,
89 HttpAuthHandlerFactory* http_auth_handler_factory, 93 HttpAuthHandlerFactory* http_auth_handler_factory,
90 HttpNetworkDelegate* network_delegate, 94 HttpNetworkDelegate* network_delegate,
91 NetLog* net_log) 95 NetLog* net_log)
92 : socket_factory_(socket_factory), 96 : socket_factory_(socket_factory),
93 host_resolver_(host_resolver), 97 host_resolver_(host_resolver),
98 cert_verifier_(cert_verifier),
94 dnsrr_resolver_(dnsrr_resolver), 99 dnsrr_resolver_(dnsrr_resolver),
95 dns_cert_checker_(dns_cert_checker), 100 dns_cert_checker_(dns_cert_checker),
96 ssl_host_info_factory_(ssl_host_info_factory), 101 ssl_host_info_factory_(ssl_host_info_factory),
97 proxy_service_(proxy_service), 102 proxy_service_(proxy_service),
98 ssl_config_service_(ssl_config_service), 103 ssl_config_service_(ssl_config_service),
99 session_(NULL), 104 session_(NULL),
100 spdy_session_pool_(spdy_session_pool), 105 spdy_session_pool_(spdy_session_pool),
101 http_auth_handler_factory_(http_auth_handler_factory), 106 http_auth_handler_factory_(http_auth_handler_factory),
102 network_delegate_(network_delegate), 107 network_delegate_(network_delegate),
103 net_log_(net_log), 108 net_log_(net_log),
104 suspended_(false) { 109 suspended_(false) {
105 DCHECK(proxy_service_); 110 DCHECK(proxy_service_);
106 DCHECK(ssl_config_service_.get()); 111 DCHECK(ssl_config_service_.get());
107 } 112 }
108 113
109 HttpNetworkLayer::HttpNetworkLayer(HttpNetworkSession* session) 114 HttpNetworkLayer::HttpNetworkLayer(HttpNetworkSession* session)
110 : socket_factory_(ClientSocketFactory::GetDefaultFactory()), 115 : socket_factory_(ClientSocketFactory::GetDefaultFactory()),
116 host_resolver_(NULL),
117 cert_verifier_(NULL),
111 dnsrr_resolver_(NULL), 118 dnsrr_resolver_(NULL),
112 dns_cert_checker_(NULL), 119 dns_cert_checker_(NULL),
113 ssl_host_info_factory_(NULL), 120 ssl_host_info_factory_(NULL),
114 ssl_config_service_(NULL), 121 ssl_config_service_(NULL),
115 session_(session), 122 session_(session),
116 spdy_session_pool_(NULL), 123 spdy_session_pool_(NULL),
117 http_auth_handler_factory_(NULL), 124 http_auth_handler_factory_(NULL),
118 network_delegate_(NULL), 125 network_delegate_(NULL),
119 net_log_(NULL), 126 net_log_(NULL),
120 suspended_(false) { 127 suspended_(false) {
(...skipping 22 matching lines...) Expand all
143 session_->tcp_socket_pool()->CloseIdleSockets(); 150 session_->tcp_socket_pool()->CloseIdleSockets();
144 } 151 }
145 152
146 HttpNetworkSession* HttpNetworkLayer::GetSession() { 153 HttpNetworkSession* HttpNetworkLayer::GetSession() {
147 if (!session_) { 154 if (!session_) {
148 DCHECK(proxy_service_); 155 DCHECK(proxy_service_);
149 if (!spdy_session_pool_.get()) 156 if (!spdy_session_pool_.get())
150 spdy_session_pool_.reset(new SpdySessionPool(ssl_config_service_)); 157 spdy_session_pool_.reset(new SpdySessionPool(ssl_config_service_));
151 session_ = new HttpNetworkSession( 158 session_ = new HttpNetworkSession(
152 host_resolver_, 159 host_resolver_,
160 cert_verifier_,
153 dnsrr_resolver_, 161 dnsrr_resolver_,
154 dns_cert_checker_, 162 dns_cert_checker_,
155 ssl_host_info_factory_, 163 ssl_host_info_factory_,
156 proxy_service_, 164 proxy_service_,
157 socket_factory_, 165 socket_factory_,
158 ssl_config_service_, 166 ssl_config_service_,
159 spdy_session_pool_.release(), 167 spdy_session_pool_.release(),
160 http_auth_handler_factory_, 168 http_auth_handler_factory_,
161 network_delegate_, 169 network_delegate_,
162 net_log_); 170 net_log_);
163 // These were just temps for lazy-initializing HttpNetworkSession. 171 // These were just temps for lazy-initializing HttpNetworkSession.
164 host_resolver_ = NULL; 172 host_resolver_ = NULL;
173 cert_verifier_ = NULL;
165 dnsrr_resolver_ = NULL; 174 dnsrr_resolver_ = NULL;
166 dns_cert_checker_ = NULL; 175 dns_cert_checker_ = NULL;
167 ssl_host_info_factory_ = NULL; 176 ssl_host_info_factory_ = NULL;
168 proxy_service_ = NULL; 177 proxy_service_ = NULL;
169 socket_factory_ = NULL; 178 socket_factory_ = NULL;
170 http_auth_handler_factory_ = NULL; 179 http_auth_handler_factory_ = NULL;
171 net_log_ = NULL; 180 net_log_ = NULL;
172 network_delegate_ = NULL; 181 network_delegate_ = NULL;
173 } 182 }
174 return session_; 183 return session_;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 pair.protocol = HttpAlternateProtocols::NPN_SPDY_2; 262 pair.protocol = HttpAlternateProtocols::NPN_SPDY_2;
254 HttpAlternateProtocols::ForceAlternateProtocol(pair); 263 HttpAlternateProtocols::ForceAlternateProtocol(pair);
255 } else if (option.empty() && it == spdy_options.begin()) { 264 } else if (option.empty() && it == spdy_options.begin()) {
256 continue; 265 continue;
257 } else { 266 } else {
258 LOG(DFATAL) << "Unrecognized spdy option: " << option; 267 LOG(DFATAL) << "Unrecognized spdy option: " << option;
259 } 268 }
260 } 269 }
261 } 270 }
262 } // namespace net 271 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698