| 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 {
|
|
|