From 62302ec92ededd472df1af25e80f68adc80f76b9 Mon Sep 17 00:00:00 2001 From: Edmund Huber Date: Sat, 6 Jun 2015 15:11:59 -0700 Subject: [PATCH] fail WebSockets with subprotocols here, because gorilla leaves it up for us to deal with subprotocols --- irc/server.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/irc/server.go b/irc/server.go index 7152bf0b..9b05ba2f 100644 --- a/irc/server.go +++ b/irc/server.go @@ -218,6 +218,14 @@ func (s *Server) wslisten(addr string) { Log.error.Printf("%s method not allowed", s) return } + + // We don't have any subprotocols, so if someone attempts to `new + // WebSocket(server, "subprotocol")` they'll break here, instead of + // getting the default, ambiguous, response from gorilla. + if v, ok := r.Header["Sec-Websocket-Protocol"]; ok { + http.Error(w, fmt.Sprintf("WebSocket subprocotols (e.g. %s) not supported", v), 400) + } + ws, err := upgrader.Upgrade(w, r, nil) if err != nil { Log.error.Printf("%s websocket upgrade error: %s", s, err)