Harden websocket nil handling
This commit is contained in:
parent
a39edfde83
commit
1705e6ef57
2 changed files with 16 additions and 4 deletions
|
|
@ -260,10 +260,11 @@ func (em *WSEventManager) sendEvent(conn *websocket.Conn, event Event) {
|
|||
|
||||
// HandleWebSocket handles WebSocket upgrade and connection.
|
||||
func (em *WSEventManager) HandleWebSocket(w http.ResponseWriter, r *http.Request) {
|
||||
if em == nil {
|
||||
if w != nil {
|
||||
http.Error(w, http.StatusText(http.StatusServiceUnavailable), http.StatusServiceUnavailable)
|
||||
}
|
||||
if w == nil {
|
||||
return
|
||||
}
|
||||
if em == nil || r == nil {
|
||||
http.Error(w, http.StatusText(http.StatusServiceUnavailable), http.StatusServiceUnavailable)
|
||||
return
|
||||
}
|
||||
em.mu.RLock()
|
||||
|
|
|
|||
|
|
@ -180,6 +180,17 @@ func TestWSEventManager_HandleWebSocket_NilReceiverFailsClosed(t *testing.T) {
|
|||
assert.Equal(t, http.StatusServiceUnavailable, recorder.Code)
|
||||
}
|
||||
|
||||
func TestWSEventManager_HandleWebSocket_NilWriterFailsClosed(t *testing.T) {
|
||||
em := NewWSEventManager()
|
||||
|
||||
req := httptest.NewRequest(http.MethodGet, "http://127.0.0.1/events", nil)
|
||||
req.RemoteAddr = "127.0.0.1:12345"
|
||||
|
||||
assert.NotPanics(t, func() {
|
||||
em.HandleWebSocket(nil, req)
|
||||
})
|
||||
}
|
||||
|
||||
func TestWSEventManager_HandleWebSocket_RejectsAfterClose(t *testing.T) {
|
||||
em := NewWSEventManager()
|
||||
em.Close()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue