diff --git a/app/router/condition.go b/app/router/condition.go index f55f79ce..08e37a2c 100644 --- a/app/router/condition.go +++ b/app/router/condition.go @@ -164,18 +164,14 @@ func (m *CachableDomainMatcher) ApplyDomain(domain string) bool { now := time.Now() if len(m.cache) > 256 && now.Sub(m.lastScan)/time.Second > 5 { - remove := make([]string, 0, 128) - now := time.Now() for k, v := range m.cache { if now.Sub(v.timestamp)/time.Second > 60 { - remove = append(remove, k) + delete(m.cache, k) } } - for _, v := range remove { - delete(m.cache, v) - } + m.lastScan = now } diff --git a/proxy/vmess/encoding/server.go b/proxy/vmess/encoding/server.go index 58677212..db5c4cad 100644 --- a/proxy/vmess/encoding/server.go +++ b/proxy/vmess/encoding/server.go @@ -75,6 +75,10 @@ func (h *SessionHistory) removeExpiredEntries() { h.Lock() defer h.Unlock() + if len(h.cache) == 0 { + return + } + for session, expire := range h.cache { if expire.Before(now) { delete(h.cache, session)