From f759cf9275cbad7655e88ff362aa9ae876424171 Mon Sep 17 00:00:00 2001 From: Paul Lorenz Date: Thu, 11 May 2023 09:21:27 -0400 Subject: [PATCH] Use a single mutex for multiple clients, otherwise their intercepts can get tangled --- tunnel/intercept/svcpoll.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tunnel/intercept/svcpoll.go b/tunnel/intercept/svcpoll.go index b081cf403..ac524cd1c 100644 --- a/tunnel/intercept/svcpoll.go +++ b/tunnel/intercept/svcpoll.go @@ -69,6 +69,7 @@ func (self *ServiceListenerGroup) NewServiceListener() *ServiceListener { healthCheckMgr: self.healthCheckMgr, addrTracker: self.addrTracker, services: map[string]*entities.Service{}, + Mutex: &self.Mutex, } self.listener = append(self.listener, result) return result @@ -100,6 +101,7 @@ func NewServiceListener(interceptor Interceptor, resolver dns.Resolver) *Service healthCheckMgr: health.NewManager(), addrTracker: addrTracker{}, services: map[string]*entities.Service{}, + Mutex: &sync.Mutex{}, } } @@ -110,7 +112,7 @@ type ServiceListener struct { healthCheckMgr health.Manager services map[string]*entities.Service addrTracker AddressTracker - sync.Mutex + *sync.Mutex } func (self *ServiceListener) WaitForShutdown() {