Index: net/http/http_network_transaction.cc |
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc |
index 97fc7db7664c419b8a492a871bb2927ca0b99e9a..8f33e20f3de4fc7845afade160064a802fe73de4 100644 |
--- a/net/http/http_network_transaction.cc |
+++ b/net/http/http_network_transaction.cc |
@@ -570,6 +570,11 @@ bool HttpNetworkTransaction::is_https_request() const { |
return request_->url.SchemeIs("https"); |
} |
+bool HttpNetworkTransaction::UsingHttpProxyWithoutTunnel() const { |
+ return (proxy_info_.is_http() || proxy_info_.is_https()) && |
+ !(request_->url.SchemeIs("https") || request_->url.SchemeIsWSOrWSS()); |
+} |
+ |
void HttpNetworkTransaction::DoCallback(int rv) { |
DCHECK_NE(rv, ERR_IO_PENDING); |
DCHECK(!callback_.is_null()); |
@@ -834,12 +839,13 @@ int HttpNetworkTransaction::DoGenerateServerAuthTokenComplete(int rv) { |
return rv; |
} |
-void HttpNetworkTransaction::BuildRequestHeaders(bool using_proxy) { |
+void HttpNetworkTransaction::BuildRequestHeaders( |
+ bool using_http_proxy_without_tunnel) { |
request_headers_.SetHeader(HttpRequestHeaders::kHost, |
GetHostAndOptionalPort(request_->url)); |
// For compat with HTTP/1.0 servers and proxies: |
- if (using_proxy) { |
+ if (using_http_proxy_without_tunnel) { |
request_headers_.SetHeader(HttpRequestHeaders::kProxyConnection, |
"keep-alive"); |
} else { |
@@ -882,7 +888,8 @@ void HttpNetworkTransaction::BuildRequestHeaders(bool using_proxy) { |
request_headers_.MergeFrom(request_->extra_headers); |
- if (using_proxy && !before_proxy_headers_sent_callback_.is_null()) |
+ if (using_http_proxy_without_tunnel && |
+ !before_proxy_headers_sent_callback_.is_null()) |
before_proxy_headers_sent_callback_.Run(proxy_info_, &request_headers_); |
response_.did_use_http_auth = |
@@ -911,9 +918,8 @@ int HttpNetworkTransaction::DoBuildRequest() { |
// This is constructed lazily (instead of within our Start method), so that |
// we have proxy info available. |
if (request_headers_.IsEmpty()) { |
- bool using_proxy = (proxy_info_.is_http() || proxy_info_.is_https()) && |
- !is_https_request(); |
- BuildRequestHeaders(using_proxy); |
+ bool using_http_proxy_without_tunnel = UsingHttpProxyWithoutTunnel(); |
+ BuildRequestHeaders(using_http_proxy_without_tunnel); |
} |
return OK; |
@@ -1417,8 +1423,7 @@ void HttpNetworkTransaction::ResetConnectionAndRequestForResend() { |
} |
bool HttpNetworkTransaction::ShouldApplyProxyAuth() const { |
- return !is_https_request() && |
- (proxy_info_.is_https() || proxy_info_.is_http()); |
+ return UsingHttpProxyWithoutTunnel(); |
} |
bool HttpNetworkTransaction::ShouldApplyServerAuth() const { |