diff options
author | Fumitoshi Ukai <ukai@google.com> | 2010-03-19 14:18:02 -0700 |
---|---|---|
committer | Fumitoshi Ukai <ukai@google.com> | 2010-03-19 14:18:02 -0700 |
commit | 888147f5404cb26998350e80d22cbc7f2d88fc03 (patch) | |
tree | 3f8331eae1f2c23e2217946234561f1afc87865e /src | |
parent | 42e7b7d3ddd574c86f24cf7455ca2e3dae734306 (diff) | |
download | go-888147f5404cb26998350e80d22cbc7f2d88fc03.tar.gz |
websocket: use URL.RawPath to construct WebSocket-Location: header
R=rsc
CC=golang-dev
http://codereview.appspot.com/651041
Committer: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/pkg/websocket/server.go | 2 | ||||
-rw-r--r-- | src/pkg/websocket/websocket_test.go | 17 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/pkg/websocket/server.go b/src/pkg/websocket/server.go index 0ccb31e8a..93d8b7afd 100644 --- a/src/pkg/websocket/server.go +++ b/src/pkg/websocket/server.go @@ -66,7 +66,7 @@ func (f Handler) ServeHTTP(c *http.Conn, req *http.Request) { return } defer rwc.Close() - location := "ws://" + req.Host + req.URL.Path + location := "ws://" + req.Host + req.URL.RawPath // TODO(ukai): verify origin,location,protocol. diff --git a/src/pkg/websocket/websocket_test.go b/src/pkg/websocket/websocket_test.go index 44fda8aaa..92582b1ef 100644 --- a/src/pkg/websocket/websocket_test.go +++ b/src/pkg/websocket/websocket_test.go @@ -60,6 +60,23 @@ func TestEcho(t *testing.T) { ws.Close() } +func TestWithQuery(t *testing.T) { + once.Do(startServer) + + client, err := net.Dial("tcp", "", serverAddr) + if err != nil { + t.Fatal("dialing", err) + } + + ws, err := newClient("/echo?q=v", "localhost", "http://localhost", + "ws://localhost/echo?q=v", "", client) + if err != nil { + t.Errorf("WebSocket handshake error", err) + return + } + ws.Close() +} + func TestHTTP(t *testing.T) { once.Do(startServer) |