Index: net/http/http_network_transaction.cc |
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc |
index 32af2dd1844a8170be8615aa2701601e24ee0b63..bbd70ed7cfb2667eb434566d3644cc5f1f17094f 100644 |
--- a/net/http/http_network_transaction.cc |
+++ b/net/http/http_network_transaction.cc |
@@ -61,6 +61,7 @@ |
#include "net/ssl/ssl_cert_request_info.h" |
#include "net/ssl/ssl_connection_status_flags.h" |
#include "url/gurl.h" |
+#include "url/url_canon.h" |
#if defined(SPDY_PROXY_AUTH_ORIGIN) |
#include <algorithm> |
@@ -1512,6 +1513,17 @@ GURL HttpNetworkTransaction::AuthURL(HttpAuth::Target target) const { |
proxy_info_.proxy_server().host_port_pair().ToString()); |
} |
case HttpAuth::AUTH_SERVER: |
+ if (ForWebSocketHandshake()) { |
+ const GURL& url = request_->url; |
+ url::Replacements<char> ws_to_http; |
+ if (url.SchemeIs("ws")) { |
+ ws_to_http.SetScheme("http", url::Component(0, 4)); |
+ } else { |
+ DCHECK(url.SchemeIs("wss")); |
+ ws_to_http.SetScheme("https", url::Component(0, 5)); |
+ } |
+ return url.ReplaceComponents(ws_to_http); |
+ } |
return request_->url; |
default: |
return GURL(); |