summaryrefslogtreecommitdiffstats
path: root/internal
diff options
context:
space:
mode:
authorbndw <ben@bdw.to>2026-02-13 21:31:09 -0800
committerbndw <ben@bdw.to>2026-02-13 21:31:09 -0800
commit1527a7313ca46cd646737fb05c33908fba034df9 (patch)
treef250effb887aaa7e85a68af59e155066d66f3e33 /internal
parentf59a1c7ad8c571f1eaaf148941741cd4026a519f (diff)
fix: allow WebSocket upgrades to bypass HTML index
WebSocket connections start as GET requests with 'Upgrade: websocket' header. The handler was serving HTML for ALL GET requests, preventing WebSocket upgrades from ever happening. Fix by checking for Upgrade header and only serving HTML/NIP-11 for non-WebSocket GET requests. Now WebSocket connections return status 101 (Switching Protocols) instead of 200 (OK).
Diffstat (limited to 'internal')
-rw-r--r--internal/handler/websocket/handler.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/internal/handler/websocket/handler.go b/internal/handler/websocket/handler.go
index 2d531e9..c285df6 100644
--- a/internal/handler/websocket/handler.go
+++ b/internal/handler/websocket/handler.go
@@ -43,8 +43,8 @@ func (h *Handler) SetIndexData(grpcAddr, httpAddr, wsAddr string) {
43} 43}
44 44
45func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 45func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
46 // Handle GET requests 46 // Handle GET requests (but not WebSocket upgrades)
47 if r.Method == "GET" { 47 if r.Method == "GET" && r.Header.Get("Upgrade") != "websocket" {
48 accept := r.Header.Get("Accept") 48 accept := r.Header.Get("Accept")
49 49
50 // NIP-11: Relay information document 50 // NIP-11: Relay information document
@@ -58,6 +58,7 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
58 return 58 return
59 } 59 }
60 60
61 // Handle WebSocket upgrade
61 conn, err := websocket.Accept(w, r) 62 conn, err := websocket.Accept(w, r)
62 if err != nil { 63 if err != nil {
63 log.Printf("WebSocket accept failed: %v", err) 64 log.Printf("WebSocket accept failed: %v", err)