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

Side by Side Diff: net/socket/ssl_client_socket_pool.cc

Issue 6341004: More net/ reordering. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Window gyp dependency Created 9 years, 11 months 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
« no previous file with comments | « net/socket/ssl_client_socket_pool.h ('k') | net/spdy/spdy_session.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/socket/ssl_client_socket_pool.h" 5 #include "net/socket/ssl_client_socket_pool.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "net/base/net_errors.h" 9 #include "net/base/net_errors.h"
10 #include "net/base/host_port_pair.h" 10 #include "net/base/host_port_pair.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 return transport_socket_handle_->GetLoadState(); 114 return transport_socket_handle_->GetLoadState();
115 case STATE_SSL_CONNECT: 115 case STATE_SSL_CONNECT:
116 case STATE_SSL_CONNECT_COMPLETE: 116 case STATE_SSL_CONNECT_COMPLETE:
117 return LOAD_STATE_SSL_HANDSHAKE; 117 return LOAD_STATE_SSL_HANDSHAKE;
118 default: 118 default:
119 NOTREACHED(); 119 NOTREACHED();
120 return LOAD_STATE_IDLE; 120 return LOAD_STATE_IDLE;
121 } 121 }
122 } 122 }
123 123
124 int SSLConnectJob::ConnectInternal() { 124 void SSLConnectJob::GetAdditionalErrorState(ClientSocketHandle * handle) {
125 switch (params_->proxy()) { 125 // Headers in |error_response_info_| indicate a proxy tunnel setup
126 case ProxyServer::SCHEME_DIRECT: 126 // problem. See DoTunnelConnectComplete.
127 next_state_ = STATE_TCP_CONNECT; 127 if (error_response_info_.headers) {
128 break; 128 handle->set_pending_http_proxy_connection(
129 case ProxyServer::SCHEME_HTTP: 129 transport_socket_handle_.release());
130 case ProxyServer::SCHEME_HTTPS:
131 next_state_ = STATE_TUNNEL_CONNECT;
132 break;
133 case ProxyServer::SCHEME_SOCKS4:
134 case ProxyServer::SCHEME_SOCKS5:
135 next_state_ = STATE_SOCKS_CONNECT;
136 break;
137 default:
138 NOTREACHED() << "unknown proxy type";
139 break;
140 } 130 }
141 return DoLoop(OK); 131 handle->set_ssl_error_response_info(error_response_info_);
132 if (!ssl_connect_start_time_.is_null())
133 handle->set_is_ssl_error(true);
142 } 134 }
143 135
144 void SSLConnectJob::OnIOComplete(int result) { 136 void SSLConnectJob::OnIOComplete(int result) {
145 int rv = DoLoop(result); 137 int rv = DoLoop(result);
146 if (rv != ERR_IO_PENDING) 138 if (rv != ERR_IO_PENDING)
147 NotifyDelegateOfCompletion(rv); // Deletes |this|. 139 NotifyDelegateOfCompletion(rv); // Deletes |this|.
148 } 140 }
149 141
150 int SSLConnectJob::DoLoop(int result) { 142 int SSLConnectJob::DoLoop(int result) {
151 DCHECK_NE(next_state_, STATE_NONE); 143 DCHECK_NE(next_state_, STATE_NONE);
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 static_cast<HttpProxyClientSocket*>(socket); 261 static_cast<HttpProxyClientSocket*>(socket);
270 error_response_info_ = *tunnel_socket->GetConnectResponseInfo(); 262 error_response_info_ = *tunnel_socket->GetConnectResponseInfo();
271 } 263 }
272 if (result < 0) 264 if (result < 0)
273 return result; 265 return result;
274 266
275 next_state_ = STATE_SSL_CONNECT; 267 next_state_ = STATE_SSL_CONNECT;
276 return result; 268 return result;
277 } 269 }
278 270
279 void SSLConnectJob::GetAdditionalErrorState(ClientSocketHandle * handle) {
280 // Headers in |error_response_info_| indicate a proxy tunnel setup
281 // problem. See DoTunnelConnectComplete.
282 if (error_response_info_.headers) {
283 handle->set_pending_http_proxy_connection(
284 transport_socket_handle_.release());
285 }
286 handle->set_ssl_error_response_info(error_response_info_);
287 if (!ssl_connect_start_time_.is_null())
288 handle->set_is_ssl_error(true);
289 }
290
291 int SSLConnectJob::DoSSLConnect() { 271 int SSLConnectJob::DoSSLConnect() {
292 next_state_ = STATE_SSL_CONNECT_COMPLETE; 272 next_state_ = STATE_SSL_CONNECT_COMPLETE;
293 // Reset the timeout to just the time allowed for the SSL handshake. 273 // Reset the timeout to just the time allowed for the SSL handshake.
294 ResetTimer(base::TimeDelta::FromSeconds(kSSLHandshakeTimeoutInSeconds)); 274 ResetTimer(base::TimeDelta::FromSeconds(kSSLHandshakeTimeoutInSeconds));
295 ssl_connect_start_time_ = base::TimeTicks::Now(); 275 ssl_connect_start_time_ = base::TimeTicks::Now();
296 276
297 ssl_socket_.reset(client_socket_factory_->CreateSSLClientSocket( 277 ssl_socket_.reset(client_socket_factory_->CreateSSLClientSocket(
298 transport_socket_handle_.release(), params_->host_and_port(), 278 transport_socket_handle_.release(), params_->host_and_port(),
299 params_->ssl_config(), ssl_host_info_.release(), cert_verifier_, 279 params_->ssl_config(), ssl_host_info_.release(), cert_verifier_,
300 dns_cert_checker_)); 280 dns_cert_checker_));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 if (result == OK || IsCertificateError(result)) { 334 if (result == OK || IsCertificateError(result)) {
355 set_socket(ssl_socket_.release()); 335 set_socket(ssl_socket_.release());
356 } else if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { 336 } else if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) {
357 error_response_info_.cert_request_info = new SSLCertRequestInfo; 337 error_response_info_.cert_request_info = new SSLCertRequestInfo;
358 ssl_socket_->GetSSLCertRequestInfo(error_response_info_.cert_request_info); 338 ssl_socket_->GetSSLCertRequestInfo(error_response_info_.cert_request_info);
359 } 339 }
360 340
361 return result; 341 return result;
362 } 342 }
363 343
364 ConnectJob* SSLClientSocketPool::SSLConnectJobFactory::NewConnectJob( 344 int SSLConnectJob::ConnectInternal() {
365 const std::string& group_name, 345 switch (params_->proxy()) {
366 const PoolBase::Request& request, 346 case ProxyServer::SCHEME_DIRECT:
367 ConnectJob::Delegate* delegate) const { 347 next_state_ = STATE_TCP_CONNECT;
368 return new SSLConnectJob(group_name, request.params(), ConnectionTimeout(), 348 break;
369 tcp_pool_, socks_pool_, http_proxy_pool_, 349 case ProxyServer::SCHEME_HTTP:
370 client_socket_factory_, host_resolver_, 350 case ProxyServer::SCHEME_HTTPS:
371 cert_verifier_, dnsrr_resolver_, dns_cert_checker_, 351 next_state_ = STATE_TUNNEL_CONNECT;
372 ssl_host_info_factory_, delegate, net_log_); 352 break;
353 case ProxyServer::SCHEME_SOCKS4:
354 case ProxyServer::SCHEME_SOCKS5:
355 next_state_ = STATE_SOCKS_CONNECT;
356 break;
357 default:
358 NOTREACHED() << "unknown proxy type";
359 break;
360 }
361 return DoLoop(OK);
373 } 362 }
374 363
375 SSLClientSocketPool::SSLConnectJobFactory::SSLConnectJobFactory( 364 SSLClientSocketPool::SSLConnectJobFactory::SSLConnectJobFactory(
376 TCPClientSocketPool* tcp_pool, 365 TCPClientSocketPool* tcp_pool,
377 SOCKSClientSocketPool* socks_pool, 366 SOCKSClientSocketPool* socks_pool,
378 HttpProxyClientSocketPool* http_proxy_pool, 367 HttpProxyClientSocketPool* http_proxy_pool,
379 ClientSocketFactory* client_socket_factory, 368 ClientSocketFactory* client_socket_factory,
380 HostResolver* host_resolver, 369 HostResolver* host_resolver,
381 CertVerifier* cert_verifier, 370 CertVerifier* cert_verifier,
382 DnsRRResolver* dnsrr_resolver, 371 DnsRRResolver* dnsrr_resolver,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 ssl_config_service_(ssl_config_service) { 430 ssl_config_service_(ssl_config_service) {
442 if (ssl_config_service_) 431 if (ssl_config_service_)
443 ssl_config_service_->AddObserver(this); 432 ssl_config_service_->AddObserver(this);
444 } 433 }
445 434
446 SSLClientSocketPool::~SSLClientSocketPool() { 435 SSLClientSocketPool::~SSLClientSocketPool() {
447 if (ssl_config_service_) 436 if (ssl_config_service_)
448 ssl_config_service_->RemoveObserver(this); 437 ssl_config_service_->RemoveObserver(this);
449 } 438 }
450 439
440 ConnectJob* SSLClientSocketPool::SSLConnectJobFactory::NewConnectJob(
441 const std::string& group_name,
442 const PoolBase::Request& request,
443 ConnectJob::Delegate* delegate) const {
444 return new SSLConnectJob(group_name, request.params(), ConnectionTimeout(),
445 tcp_pool_, socks_pool_, http_proxy_pool_,
446 client_socket_factory_, host_resolver_,
447 cert_verifier_, dnsrr_resolver_, dns_cert_checker_,
448 ssl_host_info_factory_, delegate, net_log_);
449 }
450
451 int SSLClientSocketPool::RequestSocket(const std::string& group_name, 451 int SSLClientSocketPool::RequestSocket(const std::string& group_name,
452 const void* socket_params, 452 const void* socket_params,
453 RequestPriority priority, 453 RequestPriority priority,
454 ClientSocketHandle* handle, 454 ClientSocketHandle* handle,
455 CompletionCallback* callback, 455 CompletionCallback* callback,
456 const BoundNetLog& net_log) { 456 const BoundNetLog& net_log) {
457 const scoped_refptr<SSLSocketParams>* casted_socket_params = 457 const scoped_refptr<SSLSocketParams>* casted_socket_params =
458 static_cast<const scoped_refptr<SSLSocketParams>*>(socket_params); 458 static_cast<const scoped_refptr<SSLSocketParams>*>(socket_params);
459 459
460 return base_.RequestSocket(group_name, *casted_socket_params, priority, 460 return base_.RequestSocket(group_name, *casted_socket_params, priority,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 int SSLClientSocketPool::IdleSocketCountInGroup( 497 int SSLClientSocketPool::IdleSocketCountInGroup(
498 const std::string& group_name) const { 498 const std::string& group_name) const {
499 return base_.IdleSocketCountInGroup(group_name); 499 return base_.IdleSocketCountInGroup(group_name);
500 } 500 }
501 501
502 LoadState SSLClientSocketPool::GetLoadState( 502 LoadState SSLClientSocketPool::GetLoadState(
503 const std::string& group_name, const ClientSocketHandle* handle) const { 503 const std::string& group_name, const ClientSocketHandle* handle) const {
504 return base_.GetLoadState(group_name, handle); 504 return base_.GetLoadState(group_name, handle);
505 } 505 }
506 506
507 void SSLClientSocketPool::OnSSLConfigChanged() {
508 Flush();
509 }
510
511 DictionaryValue* SSLClientSocketPool::GetInfoAsValue( 507 DictionaryValue* SSLClientSocketPool::GetInfoAsValue(
512 const std::string& name, 508 const std::string& name,
513 const std::string& type, 509 const std::string& type,
514 bool include_nested_pools) const { 510 bool include_nested_pools) const {
515 DictionaryValue* dict = base_.GetInfoAsValue(name, type); 511 DictionaryValue* dict = base_.GetInfoAsValue(name, type);
516 if (include_nested_pools) { 512 if (include_nested_pools) {
517 ListValue* list = new ListValue(); 513 ListValue* list = new ListValue();
518 if (tcp_pool_) { 514 if (tcp_pool_) {
519 list->Append(tcp_pool_->GetInfoAsValue("tcp_socket_pool", 515 list->Append(tcp_pool_->GetInfoAsValue("tcp_socket_pool",
520 "tcp_socket_pool", 516 "tcp_socket_pool",
(...skipping 15 matching lines...) Expand all
536 } 532 }
537 533
538 base::TimeDelta SSLClientSocketPool::ConnectionTimeout() const { 534 base::TimeDelta SSLClientSocketPool::ConnectionTimeout() const {
539 return base_.ConnectionTimeout(); 535 return base_.ConnectionTimeout();
540 } 536 }
541 537
542 ClientSocketPoolHistograms* SSLClientSocketPool::histograms() const { 538 ClientSocketPoolHistograms* SSLClientSocketPool::histograms() const {
543 return base_.histograms(); 539 return base_.histograms();
544 } 540 }
545 541
542 void SSLClientSocketPool::OnSSLConfigChanged() {
543 Flush();
544 }
545
546 } // namespace net 546 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_pool.h ('k') | net/spdy/spdy_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698