From 68043a17c21832ba1d2741e798dd1e707e209f1f Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Sat, 13 Apr 2024 16:20:42 -0700 Subject: [PATCH] ipn/ipnlocal: centralize assignments to cc + ccAuto in new method cc vs ccAuto is a mess. It needs to go. But this is a baby step towards getting there. Updates #11649 Change-Id: I34f33934844e580bd823a7d8f2b945cf26c87b3b Signed-off-by: Brad Fitzpatrick --- ipn/ipnlocal/local.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go index 750c7eaf4..80bdc0457 100644 --- a/ipn/ipnlocal/local.go +++ b/ipn/ipnlocal/local.go @@ -1838,8 +1838,7 @@ func (b *LocalBackend) Start(opts ipn.Options) error { if prevCC != nil { defer prevCC.Shutdown() // must be called after b.mu is unlocked } - b.cc = cc - b.ccAuto, _ = cc.(*controlclient.Auto) + b.setControlClientLocked(cc) endpoints := b.endpoints if err := b.initTKALocked(); err != nil { @@ -4567,6 +4566,15 @@ func (b *LocalBackend) requestEngineStatusAndWait() { b.statusLock.Unlock() } +// setControlClientLocked sets the control client to cc, +// which may be nil. +// +// b.mu must be held. +func (b *LocalBackend) setControlClientLocked(cc controlclient.Client) { + b.cc = cc + b.ccAuto, _ = cc.(*controlclient.Auto) +} + // resetControlClientLocked sets b.cc to nil and returns the old value. If the // returned value is non-nil, the caller must call Shutdown on it after // releasing b.mu. @@ -4589,8 +4597,7 @@ func (b *LocalBackend) resetControlClientLocked() controlclient.Client { b.numClientStatusCalls.Add(1) } prev := b.cc - b.cc = nil - b.ccAuto = nil + b.setControlClientLocked(nil) return prev }