From a1bde37fe713460276ef34060b671f2a9474e9ab Mon Sep 17 00:00:00 2001 From: artiga033 Date: Wed, 4 Mar 2026 22:52:23 +0800 Subject: [PATCH] fix(anytls): deadlock in session close --- protocol/anytls/session.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/protocol/anytls/session.go b/protocol/anytls/session.go index fd00919..c694cd1 100644 --- a/protocol/anytls/session.go +++ b/protocol/anytls/session.go @@ -207,11 +207,13 @@ func (s *session) run() error { func (s *session) Close() error { if s.closed.CompareAndSwap(false, true) { s.streamLock.Lock() - defer s.streamLock.Unlock() - for i := range s.streams { - s.streams[i].Close() - } + streams := s.streams s.streams = make(map[uint32]*stream) + s.streamLock.Unlock() + + for _, stream := range streams { + stream.Close() + } return s.conn.Close() } return nil