mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-10-29 06:31:56 +00:00
use RLock
This commit is contained in:
1 parent
8f705a1ea4
commit
2b0d898d08
1 file changed
+13
-5
@@ -286,17 +286,25 @@ 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.RUnlock()
|
||||
|
||||
for i := range forced {
|
||||
m.Lock()
|
||||
delete(m.m, forced[i])
|
||||
m.Unlock()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
manager *clientManager
|
||||
|
||||
Reference in new issue
Block a user