mirror of
https://github.com/tailscale/tailscale.git
synced 2025-12-23 00:56:20 +00:00
wgengine/userspace: run link change subscribers in eventqueue (#18024)
Updates #17996 Signed-off-by: Claus Lensbøl <claus@tailscale.com>
This commit is contained in:
@@ -51,6 +51,7 @@ import (
|
||||
"tailscale.com/util/checkchange"
|
||||
"tailscale.com/util/clientmetric"
|
||||
"tailscale.com/util/eventbus"
|
||||
"tailscale.com/util/execqueue"
|
||||
"tailscale.com/util/mak"
|
||||
"tailscale.com/util/set"
|
||||
"tailscale.com/util/testenv"
|
||||
@@ -98,6 +99,8 @@ type userspaceEngine struct {
|
||||
eventBus *eventbus.Bus
|
||||
eventClient *eventbus.Client
|
||||
|
||||
linkChangeQueue execqueue.ExecQueue
|
||||
|
||||
logf logger.Logf
|
||||
wgLogger *wglog.Logger // a wireguard-go logging wrapper
|
||||
reqCh chan struct{}
|
||||
@@ -544,7 +547,7 @@ func NewUserspaceEngine(logf logger.Logf, conf Config) (_ Engine, reterr error)
|
||||
if f, ok := feature.HookProxyInvalidateCache.GetOk(); ok {
|
||||
f()
|
||||
}
|
||||
e.linkChange(&cd)
|
||||
e.linkChangeQueue.Add(func() { e.linkChange(&cd) })
|
||||
})
|
||||
e.eventClient = ec
|
||||
e.logf("Engine created.")
|
||||
@@ -1288,6 +1291,9 @@ func (e *userspaceEngine) RequestStatus() {
|
||||
|
||||
func (e *userspaceEngine) Close() {
|
||||
e.eventClient.Close()
|
||||
// TODO(cmol): Should we wait for it too?
|
||||
// Same question raised in appconnector.go.
|
||||
e.linkChangeQueue.Shutdown()
|
||||
e.mu.Lock()
|
||||
if e.closing {
|
||||
e.mu.Unlock()
|
||||
|
||||
Reference in New Issue
Block a user