Index: net/socket/ssl_client_socket_pool.cc |
diff --git a/net/socket/ssl_client_socket_pool.cc b/net/socket/ssl_client_socket_pool.cc |
index a338a7f22721a40f579b4300ee23bc5d6e608e04..048ff4b6fc01d93e7a38827382efed810ea88045 100644 |
--- a/net/socket/ssl_client_socket_pool.cc |
+++ b/net/socket/ssl_client_socket_pool.cc |
@@ -8,6 +8,7 @@ |
#include "base/values.h" |
#include "net/base/net_errors.h" |
#include "net/base/ssl_cert_request_info.h" |
+#include "net/base/ssl_host_info.h" |
#include "net/http/http_proxy_client_socket.h" |
#include "net/http/http_proxy_client_socket_pool.h" |
#include "net/socket/client_socket_factory.h" |
@@ -76,6 +77,7 @@ SSLConnectJob::SSLConnectJob( |
ClientSocketFactory* client_socket_factory, |
HostResolver* host_resolver, |
DnsRRResolver* dnsrr_resolver, |
+ SSLHostInfoFactory* ssl_host_info_factory, |
Delegate* delegate, |
NetLog* net_log) |
: ConnectJob(group_name, timeout_duration, delegate, |
@@ -87,6 +89,7 @@ SSLConnectJob::SSLConnectJob( |
client_socket_factory_(client_socket_factory), |
resolver_(host_resolver), |
dnsrr_resolver_(dnsrr_resolver), |
+ ssl_host_info_factory_(ssl_host_info_factory), |
ALLOW_THIS_IN_INITIALIZER_LIST( |
callback_(this, &SSLConnectJob::OnIOComplete)) {} |
@@ -188,10 +191,14 @@ int SSLConnectJob::DoLoop(int result) { |
int SSLConnectJob::DoTCPConnect() { |
DCHECK(tcp_pool_); |
- if (params_->ssl_config().ssl_host_info.get()) { |
+ if (ssl_host_info_factory_ && SSLConfigService::snap_start_enabled()) { |
+ ssl_host_info_.reset( |
+ ssl_host_info_factory_->GetForHost(params_->hostname())); |
+ } |
+ if (ssl_host_info_.get()) { |
// This starts fetching the SSL host info from the disk cache for Snap |
// Start. |
- params_->ssl_config().ssl_host_info->Start(); |
+ ssl_host_info_->Start(); |
} |
next_state_ = STATE_TCP_CONNECT_COMPLETE; |
@@ -277,7 +284,7 @@ int SSLConnectJob::DoSSLConnect() { |
ssl_socket_.reset(client_socket_factory_->CreateSSLClientSocket( |
transport_socket_handle_.release(), params_->hostname(), |
- params_->ssl_config())); |
+ params_->ssl_config(), ssl_host_info_.release())); |
return ssl_socket_->Connect(&callback_); |
} |
@@ -348,7 +355,8 @@ ConnectJob* SSLClientSocketPool::SSLConnectJobFactory::NewConnectJob( |
return new SSLConnectJob(group_name, request.params(), ConnectionTimeout(), |
tcp_pool_, socks_pool_, http_proxy_pool_, |
client_socket_factory_, host_resolver_, |
- dnsrr_resolver_, delegate, net_log_); |
+ dnsrr_resolver_, ssl_host_info_factory_, delegate, |
+ net_log_); |
} |
SSLClientSocketPool::SSLConnectJobFactory::SSLConnectJobFactory( |
@@ -358,6 +366,7 @@ SSLClientSocketPool::SSLConnectJobFactory::SSLConnectJobFactory( |
ClientSocketFactory* client_socket_factory, |
HostResolver* host_resolver, |
DnsRRResolver* dnsrr_resolver, |
+ SSLHostInfoFactory* ssl_host_info_factory, |
NetLog* net_log) |
: tcp_pool_(tcp_pool), |
socks_pool_(socks_pool), |
@@ -365,6 +374,7 @@ SSLClientSocketPool::SSLConnectJobFactory::SSLConnectJobFactory( |
client_socket_factory_(client_socket_factory), |
host_resolver_(host_resolver), |
dnsrr_resolver_(dnsrr_resolver), |
+ ssl_host_info_factory_(ssl_host_info_factory), |
net_log_(net_log) { |
base::TimeDelta max_transport_timeout = base::TimeDelta(); |
base::TimeDelta pool_timeout; |
@@ -390,6 +400,7 @@ SSLClientSocketPool::SSLClientSocketPool( |
ClientSocketPoolHistograms* histograms, |
HostResolver* host_resolver, |
DnsRRResolver* dnsrr_resolver, |
+ SSLHostInfoFactory* ssl_host_info_factory, |
ClientSocketFactory* client_socket_factory, |
TCPClientSocketPool* tcp_pool, |
SOCKSClientSocketPool* socks_pool, |
@@ -405,7 +416,8 @@ SSLClientSocketPool::SSLClientSocketPool( |
base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout), |
new SSLConnectJobFactory(tcp_pool, socks_pool, http_proxy_pool, |
client_socket_factory, host_resolver, |
- dnsrr_resolver, net_log)), |
+ dnsrr_resolver, ssl_host_info_factory, |
+ net_log)), |
ssl_config_service_(ssl_config_service) { |
if (ssl_config_service_) |
ssl_config_service_->AddObserver(this); |