From 6cc0036b400b868c8937a4059d8d5c5b67f9ee2f Mon Sep 17 00:00:00 2001 From: Maisem Ali Date: Fri, 11 Nov 2022 11:29:03 +0500 Subject: [PATCH] ipn/ipnlocal: use updated prefs in tkaSyncIfNeeded Signed-off-by: Maisem Ali --- ipn/ipnlocal/local.go | 2 +- ipn/ipnlocal/network-lock.go | 5 +++-- ipn/ipnlocal/network-lock_test.go | 8 ++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go index 741f26148..9aa9e8ca2 100644 --- a/ipn/ipnlocal/local.go +++ b/ipn/ipnlocal/local.go @@ -844,7 +844,7 @@ func (b *LocalBackend) setClientStatus(st controlclient.Status) { // Prefs will be written out; this is not safe unless locked or cloned. if st.NetMap != nil { b.mu.Unlock() // respect locking rules for tkaSyncIfNeeded - if err := b.tkaSyncIfNeeded(st.NetMap); err != nil { + if err := b.tkaSyncIfNeeded(st.NetMap, prefs.View()); err != nil { b.logf("[v1] TKA sync error: %v", err) } b.mu.Lock() diff --git a/ipn/ipnlocal/network-lock.go b/ipn/ipnlocal/network-lock.go index 29503f0fa..1e8d06bef 100644 --- a/ipn/ipnlocal/network-lock.go +++ b/ipn/ipnlocal/network-lock.go @@ -17,6 +17,7 @@ import ( "time" "tailscale.com/envknob" + "tailscale.com/ipn" "tailscale.com/ipn/ipnstate" "tailscale.com/tailcfg" "tailscale.com/tka" @@ -96,7 +97,7 @@ func (b *LocalBackend) tkaFilterNetmapLocked(nm *netmap.NetworkMap) { // // tkaSyncIfNeeded immediately takes b.takeSyncLock which is held throughout, // and may take b.mu as required. -func (b *LocalBackend) tkaSyncIfNeeded(nm *netmap.NetworkMap) error { +func (b *LocalBackend) tkaSyncIfNeeded(nm *netmap.NetworkMap, prefs ipn.PrefsView) error { if !envknob.UseWIPCode() { // If the feature flag is not enabled, pretend we don't exist. return nil @@ -109,7 +110,7 @@ func (b *LocalBackend) tkaSyncIfNeeded(nm *netmap.NetworkMap) error { b.mu.Lock() // take mu to protect access to synchronized fields. defer b.mu.Unlock() - ourNodeKey := b.pm.CurrentPrefs().Persist().PublicNodeKey() + ourNodeKey := prefs.Persist().PublicNodeKey() isEnabled := b.tka != nil wantEnabled := nm.TKAEnabled diff --git a/ipn/ipnlocal/network-lock_test.go b/ipn/ipnlocal/network-lock_test.go index bbe1dab15..a60d3a1f4 100644 --- a/ipn/ipnlocal/network-lock_test.go +++ b/ipn/ipnlocal/network-lock_test.go @@ -135,7 +135,7 @@ func TestTKAEnablementFlow(t *testing.T) { err = b.tkaSyncIfNeeded(&netmap.NetworkMap{ TKAEnabled: true, TKAHead: a1.Head(), - }) + }, pm.CurrentPrefs()) if err != nil { t.Errorf("tkaSyncIfNeededLocked() failed: %v", err) } @@ -237,7 +237,7 @@ func TestTKADisablementFlow(t *testing.T) { err = b.tkaSyncIfNeeded(&netmap.NetworkMap{ TKAEnabled: false, TKAHead: authority.Head(), - }) + }, pm.CurrentPrefs()) if err != nil { t.Errorf("tkaSyncIfNeededLocked() failed: %v", err) } @@ -250,7 +250,7 @@ func TestTKADisablementFlow(t *testing.T) { err = b.tkaSyncIfNeeded(&netmap.NetworkMap{ TKAEnabled: false, TKAHead: authority.Head(), - }) + }, pm.CurrentPrefs()) if err != nil { t.Errorf("tkaSyncIfNeededLocked() failed: %v", err) } @@ -485,7 +485,7 @@ func TestTKASync(t *testing.T) { err = b.tkaSyncIfNeeded(&netmap.NetworkMap{ TKAEnabled: true, TKAHead: controlAuthority.Head(), - }) + }, pm.CurrentPrefs()) if err != nil { t.Errorf("tkaSyncIfNeededLocked() failed: %v", err) }