Skip to content

Commit d7cf0cf

Browse files
cmolnickkhyl
authored andcommitted
wgengine/userspace: run link change subscribers in eventqueue (tailscale#18024)
Updates tailscale#17996 Signed-off-by: Claus Lensbøl <claus@tailscale.com> (cherry picked from commit e7f5ca1)
1 parent f58cbff commit d7cf0cf

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

wgengine/userspace.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import (
5050
"tailscale.com/util/checkchange"
5151
"tailscale.com/util/clientmetric"
5252
"tailscale.com/util/eventbus"
53+
"tailscale.com/util/execqueue"
5354
"tailscale.com/util/mak"
5455
"tailscale.com/util/set"
5556
"tailscale.com/util/testenv"
@@ -97,6 +98,8 @@ type userspaceEngine struct {
9798
eventBus *eventbus.Bus
9899
eventClient *eventbus.Client
99100

101+
linkChangeQueue execqueue.ExecQueue
102+
100103
logf logger.Logf
101104
wgLogger *wglog.Logger // a wireguard-go logging wrapper
102105
reqCh chan struct{}
@@ -543,7 +546,7 @@ func NewUserspaceEngine(logf logger.Logf, conf Config) (_ Engine, reterr error)
543546
if f, ok := feature.HookProxyInvalidateCache.GetOk(); ok {
544547
f()
545548
}
546-
e.linkChange(&cd)
549+
e.linkChangeQueue.Add(func() { e.linkChange(&cd) })
547550
})
548551
e.eventClient = ec
549552
e.logf("Engine created.")
@@ -1258,6 +1261,9 @@ func (e *userspaceEngine) RequestStatus() {
12581261

12591262
func (e *userspaceEngine) Close() {
12601263
e.eventClient.Close()
1264+
// TODO(cmol): Should we wait for it too?
1265+
// Same question raised in appconnector.go.
1266+
e.linkChangeQueue.Shutdown()
12611267
e.mu.Lock()
12621268
if e.closing {
12631269
e.mu.Unlock()

0 commit comments

Comments
 (0)