From 2b0d898d0810e13d65975dbaa0f27a0ae46b654f Mon Sep 17 00:00:00 2001 From: null Date: Thu, 8 Oct 2026 23:38:14 +0800 Subject: [PATCH] use RLock --- transport/internet/hysteria/dialer.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/transport/internet/hysteria/dialer.go b/transport/internet/hysteria/dialer.go index b4417dc94..6ff19c237 100644 --- a/transport/internet/hysteria/dialer.go +++ b/transport/internet/hysteria/dialer.go @@ -286,15 +286,23 @@ type clientManager struct { func (m *clientManager) clean() { ticker := time.NewTicker(idleCleanupInterval) for range ticker.C { - m.Lock() + var forced []dialerConf + + m.RLock() for k, c := range m.m { - forced := c.instance != nil && !c.instance.IsRunning() - c.clean(forced) - if forced { - delete(m.m, k) + force := c.instance != nil && !c.instance.IsRunning() + c.clean(force) + if force { + forced = append(forced, k) } } - m.Unlock() + m.RUnlock() + + for i := range forced { + m.Lock() + delete(m.m, forced[i]) + m.Unlock() + } } }