Index: net/http/http_network_transaction.cc |
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc |
index f4df073b4bba5ad905631653d2cba46820c0daa7..8ee9069c5574f0340a9cb3a6b0dd375ece30ded6 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> |
@@ -1545,6 +1546,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); |
+ } |
Ryan Sleevi
2014/07/29 19:54:32
This seems like a violation of SOP.
ws://foo.bar
tyoshino (SeeGerritForStatus)
2014/07/30 03:39:54
The default port is the same as HTTP for both secu
Adam Rice
2014/07/30 03:43:34
The issue is ws: both is and isn't the same protoc
|
return request_->url; |
default: |
return GURL(); |