From be90e91c6890a255a8ab78a36f431ca407b6502e Mon Sep 17 00:00:00 2001 From: lesismal Date: Mon, 1 Jan 2024 20:29:10 +0800 Subject: [PATCH] extension/websocket: fix Accept blocked when listener closed --- extension/protocol/websocket/websocket.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extension/protocol/websocket/websocket.go b/extension/protocol/websocket/websocket.go index 4a742dc..31a9ee4 100644 --- a/extension/protocol/websocket/websocket.go +++ b/extension/protocol/websocket/websocket.go @@ -46,7 +46,6 @@ func (ln *Listener) Handler(w http.ResponseWriter, r *http.Request) { case <-ln.chClose: c.Close() } - } // Close . @@ -64,9 +63,10 @@ func (ln *Listener) Addr() net.Addr { // Accept . func (ln *Listener) Accept() (net.Conn, error) { - c := <-ln.chAccept - if c != nil { + select { + case c := <-ln.chAccept: return c, nil + case <-ln.chClose: } return nil, ErrClosed }