From ee10d32eada62e5c12a6cbb0c458281591605480 Mon Sep 17 00:00:00 2001 From: goUser <969777@mail.ru> Date: Thu, 17 Jul 2025 01:28:12 +0400 Subject: [PATCH] race condition fix --- monitor_shared.go | 5 +++++ stack_system_nat.go | 2 ++ 2 files changed, 7 insertions(+) diff --git a/monitor_shared.go b/monitor_shared.go index 12e3e21..265b07d 100644 --- a/monitor_shared.go +++ b/monitor_shared.go @@ -66,7 +66,12 @@ func (m *defaultInterfaceMonitor) Start() error { return nil } +var accessDelayCheckUpdate sync.Mutex + func (m *defaultInterfaceMonitor) delayCheckUpdate() { + accessDelayCheckUpdate.Lock() + defer accessDelayCheckUpdate.Unlock() + if m.checkUpdateTimer == nil { m.checkUpdateTimer = time.AfterFunc(time.Second, m.postCheckUpdate) } else { diff --git a/stack_system_nat.go b/stack_system_nat.go index 1d0216e..8dc412a 100644 --- a/stack_system_nat.go +++ b/stack_system_nat.go @@ -66,7 +66,9 @@ func (n *TCPNat) LookupBack(port uint16) *TCPSession { session := n.portMap[port] n.portAccess.RUnlock() if session != nil { + n.portAccess.Lock() session.LastActive = time.Now() + n.portAccess.Unlock() } return session }