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

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

Issue 2756503002: Allow SpdySessionPool to find/create SpdySession with IP pooling disabled. (Closed)
Patch Set: Created 3 years, 9 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
« no previous file with comments | « no previous file | net/http/http_stream_factory_impl_job.cc » ('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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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_proxy_client_socket_wrapper.h" 5 #include "net/http/http_proxy_client_socket_wrapper.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 SetConnectTimer(proxy_negotiation_timeout_duration_); 417 SetConnectTimer(proxy_negotiation_timeout_duration_);
418 418
419 next_state_ = STATE_HTTP_PROXY_CONNECT; 419 next_state_ = STATE_HTTP_PROXY_CONNECT;
420 return result; 420 return result;
421 } 421 }
422 422
423 int HttpProxyClientSocketWrapper::DoSSLConnect() { 423 int HttpProxyClientSocketWrapper::DoSSLConnect() {
424 if (tunnel_) { 424 if (tunnel_) {
425 SpdySessionKey key(GetDestination().host_port_pair(), ProxyServer::Direct(), 425 SpdySessionKey key(GetDestination().host_port_pair(), ProxyServer::Direct(),
426 PRIVACY_MODE_DISABLED); 426 PRIVACY_MODE_DISABLED);
427 if (spdy_session_pool_->FindAvailableSession(key, GURL(), net_log_)) { 427 if (spdy_session_pool_->FindAvailableSession(
428 key, GURL(),
429 /* enable_ip_based_pooling = */ true, net_log_)) {
428 using_spdy_ = true; 430 using_spdy_ = true;
429 next_state_ = STATE_SPDY_PROXY_CREATE_STREAM; 431 next_state_ = STATE_SPDY_PROXY_CREATE_STREAM;
430 return OK; 432 return OK;
431 } 433 }
432 } 434 }
433 next_state_ = STATE_SSL_CONNECT_COMPLETE; 435 next_state_ = STATE_SSL_CONNECT_COMPLETE;
434 transport_socket_handle_.reset(new ClientSocketHandle()); 436 transport_socket_handle_.reset(new ClientSocketHandle());
435 return transport_socket_handle_->Init( 437 return transport_socket_handle_->Init(
436 group_name_, ssl_params_, priority_, respect_limits_, 438 group_name_, ssl_params_, priority_, respect_limits_,
437 base::Bind(&HttpProxyClientSocketWrapper::OnIOComplete, 439 base::Bind(&HttpProxyClientSocketWrapper::OnIOComplete,
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 517
516 return result; 518 return result;
517 } 519 }
518 520
519 int HttpProxyClientSocketWrapper::DoSpdyProxyCreateStream() { 521 int HttpProxyClientSocketWrapper::DoSpdyProxyCreateStream() {
520 DCHECK(using_spdy_); 522 DCHECK(using_spdy_);
521 DCHECK(tunnel_); 523 DCHECK(tunnel_);
522 SpdySessionKey key(GetDestination().host_port_pair(), ProxyServer::Direct(), 524 SpdySessionKey key(GetDestination().host_port_pair(), ProxyServer::Direct(),
523 PRIVACY_MODE_DISABLED); 525 PRIVACY_MODE_DISABLED);
524 base::WeakPtr<SpdySession> spdy_session = 526 base::WeakPtr<SpdySession> spdy_session =
525 spdy_session_pool_->FindAvailableSession(key, GURL(), net_log_); 527 spdy_session_pool_->FindAvailableSession(
528 key, GURL(),
529 /* enable_ip_based_pooling = */ true, net_log_);
526 // It's possible that a session to the proxy has recently been created 530 // It's possible that a session to the proxy has recently been created
527 if (spdy_session) { 531 if (spdy_session) {
528 if (transport_socket_handle_.get()) { 532 if (transport_socket_handle_.get()) {
529 if (transport_socket_handle_->socket()) 533 if (transport_socket_handle_->socket())
530 transport_socket_handle_->socket()->Disconnect(); 534 transport_socket_handle_->socket()->Disconnect();
531 transport_socket_handle_->Reset(); 535 transport_socket_handle_->Reset();
532 } 536 }
533 } else { 537 } else {
534 // Create a session direct to the proxy itself 538 // Create a session direct to the proxy itself
535 spdy_session = spdy_session_pool_->CreateAvailableSessionFromSocket( 539 spdy_session = spdy_session_pool_->CreateAvailableSessionFromSocket(
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 const HostResolver::RequestInfo& 628 const HostResolver::RequestInfo&
625 HttpProxyClientSocketWrapper::GetDestination() { 629 HttpProxyClientSocketWrapper::GetDestination() {
626 if (transport_params_) { 630 if (transport_params_) {
627 return transport_params_->destination(); 631 return transport_params_->destination();
628 } else { 632 } else {
629 return ssl_params_->GetDirectConnectionParams()->destination(); 633 return ssl_params_->GetDirectConnectionParams()->destination();
630 } 634 }
631 } 635 }
632 636
633 } // namespace net 637 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/http/http_stream_factory_impl_job.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698