diff --git a/app/proxyman/inbound/worker.go b/app/proxyman/inbound/worker.go index 04467808..b7d84cf6 100644 --- a/app/proxyman/inbound/worker.go +++ b/app/proxyman/inbound/worker.go @@ -62,7 +62,9 @@ func (w *tcpWorker) callback(conn internet.Connection) { newError("connection ends").Base(err).WriteToLog() } cancel() - conn.Close() + if err := conn.Close(); err != nil { + newError("failed to close connection").Base(err).WriteToLog() + } } func (w *tcpWorker) Proxy() proxy.Inbound { @@ -128,7 +130,7 @@ func (c *udpConn) Write(buf []byte) (int, error) { } func (c *udpConn) Close() error { - common.Close(c.done) + common.Must(c.done.Close()) return nil } @@ -254,11 +256,15 @@ func (w *udpWorker) Start() error { } func (w *udpWorker) Close() error { + w.Lock() + defer w.Unlock() + if w.hub != nil { w.hub.Close() - w.done.Close() - common.Close(w.proxy) } + + common.Must(w.done.Close()) + common.Close(w.proxy) return nil }