summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFumitoshi Ukai <ukai@google.com>2010-03-19 14:18:02 -0700
committerFumitoshi Ukai <ukai@google.com>2010-03-19 14:18:02 -0700
commit888147f5404cb26998350e80d22cbc7f2d88fc03 (patch)
tree3f8331eae1f2c23e2217946234561f1afc87865e /src
parent42e7b7d3ddd574c86f24cf7455ca2e3dae734306 (diff)
downloadgo-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.go2
-rw-r--r--src/pkg/websocket/websocket_test.go17
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)