fix(multiplayer): reject websocket caps before upgrade

This commit is contained in:
Josh Creek
2026-09-01 19:35:34 +01:00
parent ad59c5f567
commit 52e3d73678
3 changed files with 35 additions and 8 deletions
+7 -6
View File
@@ -161,6 +161,13 @@ func (s *Service) controlPlaneEvent(w http.ResponseWriter, r *http.Request) {
if !ok {
return
}
hub := s.getEventHub()
subscriber := hub.subscribe(playerID)
if subscriber == nil {
writeError(w, http.StatusTooManyRequests, "websocket_connection_limited")
return
}
defer hub.unsubscribe(subscriber)
hijacker, ok := w.(http.Hijacker)
if !ok {
writeError(w, http.StatusNotImplemented, "websocket_unavailable")
@@ -178,12 +185,6 @@ func (s *Service) controlPlaneEvent(w http.ResponseWriter, r *http.Request) {
if err := buffered.Flush(); err != nil {
return
}
subscriber := s.getEventHub().subscribe(playerID)
if subscriber == nil {
return
}
defer s.getEventHub().unsubscribe(subscriber)
var writeMu sync.Mutex
done := make(chan struct{})
go func() {