Index: net/websockets/websocket_stream.cc |
diff --git a/net/websockets/websocket_stream.cc b/net/websockets/websocket_stream.cc |
index 507ed9dadde4237a5b549e32bc16dcf851b0c756..794aca4a3d5160c8bb7173700f428ea6d9988c7c 100644 |
--- a/net/websockets/websocket_stream.cc |
+++ b/net/websockets/websocket_stream.cc |
@@ -146,7 +146,7 @@ void Delegate::OnReadCompleted(URLRequest* request, int bytes_read) { |
scoped_ptr<WebSocketStreamRequest> CreateAndConnectStreamWithCreateHelper( |
const GURL& socket_url, |
scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper, |
- const GURL& origin, |
+ const GURL& origin_url, |
URLRequestContext* url_request_context, |
const BoundNetLog& net_log, |
scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate) { |
@@ -156,9 +156,20 @@ scoped_ptr<WebSocketStreamRequest> CreateAndConnectStreamWithCreateHelper( |
connect_delegate.Pass(), |
create_helper.get())); |
HttpRequestHeaders headers; |
+ std::string origin; |
+ if (origin_url.is_valid()) { |
+ // GURL::spec() adds a slash at the end of an origin, |
+ // so we construct the origin string representation by hand. |
+ origin = origin_url.scheme() + "://" + origin_url.host(); |
+ if (origin_url.has_port()) |
+ origin += ":" + origin_url.port(); |
+ } else { |
+ origin = "null"; |
+ } |
+ |
headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase); |
headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade); |
- headers.SetHeader(HttpRequestHeaders::kOrigin, origin.spec()); |
+ headers.SetHeader(HttpRequestHeaders::kOrigin, origin); |
// TODO(ricea): Move the version number to websocket_handshake_constants.h |
headers.SetHeader(websockets::kSecWebSocketVersion, |
websockets::kSupportedVersion); |