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

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

Issue 1006643002: Plumb connection attempts from (non-proxy) ConnectJobs to HttpNetworkTransaction. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Plumb up to HttpNetworkTransaction Created 5 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
OLDNEW
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/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 540 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 OnIOComplete(ERR_SSL_CLIENT_AUTH_CERT_NEEDED); 551 OnIOComplete(ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
552 } 552 }
553 553
554 void HttpNetworkTransaction::OnHttpsProxyTunnelResponse( 554 void HttpNetworkTransaction::OnHttpsProxyTunnelResponse(
555 const HttpResponseInfo& response_info, 555 const HttpResponseInfo& response_info,
556 const SSLConfig& used_ssl_config, 556 const SSLConfig& used_ssl_config,
557 const ProxyInfo& used_proxy_info, 557 const ProxyInfo& used_proxy_info,
558 HttpStream* stream) { 558 HttpStream* stream) {
559 DCHECK_EQ(STATE_CREATE_STREAM_COMPLETE, next_state_); 559 DCHECK_EQ(STATE_CREATE_STREAM_COMPLETE, next_state_);
560 560
561 CopyConnectionAttempts();
562
561 headers_valid_ = true; 563 headers_valid_ = true;
562 response_ = response_info; 564 response_ = response_info;
563 server_ssl_config_ = used_ssl_config; 565 server_ssl_config_ = used_ssl_config;
564 proxy_info_ = used_proxy_info; 566 proxy_info_ = used_proxy_info;
565 if (stream_) 567 if (stream_)
566 total_received_bytes_ += stream_->GetTotalReceivedBytes(); 568 total_received_bytes_ += stream_->GetTotalReceivedBytes();
567 stream_.reset(stream); 569 stream_.reset(stream);
568 stream_request_.reset(); // we're done with the stream request 570 stream_request_.reset(); // we're done with the stream request
569 OnIOComplete(ERR_HTTPS_PROXY_TUNNEL_RESPONSE); 571 OnIOComplete(ERR_HTTPS_PROXY_TUNNEL_RESPONSE);
570 } 572 }
571 573
574 const ClientSocketHandle::ConnectionAttempts&
575 HttpNetworkTransaction::connection_attempts() const {
576 return connection_attempts_;
577 }
578
572 bool HttpNetworkTransaction::IsSecureRequest() const { 579 bool HttpNetworkTransaction::IsSecureRequest() const {
573 return request_->url.SchemeIsSecure(); 580 return request_->url.SchemeIsSecure();
574 } 581 }
575 582
576 bool HttpNetworkTransaction::UsingHttpProxyWithoutTunnel() const { 583 bool HttpNetworkTransaction::UsingHttpProxyWithoutTunnel() const {
577 return (proxy_info_.is_http() || proxy_info_.is_https() || 584 return (proxy_info_.is_http() || proxy_info_.is_https() ||
578 proxy_info_.is_quic()) && 585 proxy_info_.is_quic()) &&
579 !(request_->url.SchemeIs("https") || request_->url.SchemeIsWSOrWSS()); 586 !(request_->url.SchemeIs("https") || request_->url.SchemeIsWSOrWSS());
580 } 587 }
581 588
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 server_ssl_config_, 749 server_ssl_config_,
743 proxy_ssl_config_, 750 proxy_ssl_config_,
744 this, 751 this,
745 net_log_)); 752 net_log_));
746 } 753 }
747 DCHECK(stream_request_.get()); 754 DCHECK(stream_request_.get());
748 return ERR_IO_PENDING; 755 return ERR_IO_PENDING;
749 } 756 }
750 757
751 int HttpNetworkTransaction::DoCreateStreamComplete(int result) { 758 int HttpNetworkTransaction::DoCreateStreamComplete(int result) {
759 CopyConnectionAttempts();
Ryan Hamilton 2015/03/17 03:22:28 Is it clear that these are the only places this me
Deprecated (see juliatuttle) 2015/03/23 17:45:35 It was clear to me when I wrote it; I looked for p
760
752 if (result == OK) { 761 if (result == OK) {
753 next_state_ = STATE_INIT_STREAM; 762 next_state_ = STATE_INIT_STREAM;
754 DCHECK(stream_.get()); 763 DCHECK(stream_.get());
755 } else if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { 764 } else if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) {
756 result = HandleCertificateRequest(result); 765 result = HandleCertificateRequest(result);
757 } else if (result == ERR_HTTPS_PROXY_TUNNEL_RESPONSE) { 766 } else if (result == ERR_HTTPS_PROXY_TUNNEL_RESPONSE) {
758 // Return OK and let the caller read the proxy's error page 767 // Return OK and let the caller read the proxy's error page
759 next_state_ = STATE_NONE; 768 next_state_ = STATE_NONE;
760 return OK; 769 return OK;
761 } else if (result == ERR_HTTP_1_1_REQUIRED || 770 } else if (result == ERR_HTTP_1_1_REQUIRED ||
(...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after
1533 default: 1542 default:
1534 description = base::StringPrintf("Unknown state 0x%08X (%u)", state, 1543 description = base::StringPrintf("Unknown state 0x%08X (%u)", state,
1535 state); 1544 state);
1536 break; 1545 break;
1537 } 1546 }
1538 return description; 1547 return description;
1539 } 1548 }
1540 1549
1541 #undef STATE_CASE 1550 #undef STATE_CASE
1542 1551
1552 void HttpNetworkTransaction::CopyConnectionAttempts() {
1553 DCHECK(stream_request_);
1554
1555 for (const auto& attempt : stream_request_->connection_attempts())
1556 connection_attempts_.push_back(attempt);
Ryan Hamilton 2015/03/17 03:22:28 Could you simply do connection_attempts_ = stream_
Deprecated (see juliatuttle) 2015/03/23 17:45:35 Can we not restart the request with auth data? I w
Ryan Hamilton 2015/03/24 19:20:19 Oh, are you explicitly attempting to append and no
1557 }
1558
1543 } // namespace net 1559 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698