ipn/ipnlocal: fix integration test failure in tkaSyncIfNeeded

In main, some of the prefs handling was reworked and some of those
changes were cherry picked to 1.32. This prevents failures for the
internal integration test for TKA that was failing due to an
uninitialized prefs.Persist.

Signed-off-by: Adrian Dewhurst <adrian@tailscale.com>
release-branch/1.32
Adrian Dewhurst 3 years ago committed by Adrian Dewhurst
parent 39d73f9fae
commit 5e65717c7f

@ -806,7 +806,7 @@ func (b *LocalBackend) setClientStatus(st controlclient.Status) {
}
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()

@ -17,6 +17,7 @@ import (
"time"
"tailscale.com/envknob"
"tailscale.com/ipn"
"tailscale.com/ipn/ipnstate"
"tailscale.com/tailcfg"
"tailscale.com/tka"
@ -89,7 +90,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
@ -100,7 +101,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.prefs.Persist().PublicNodeKey()
ourNodeKey := prefs.Persist().PublicNodeKey()
isEnabled := b.tka != nil
wantEnabled := nm.TKAEnabled

@ -130,7 +130,7 @@ func TestTKAEnablementFlow(t *testing.T) {
err = b.tkaSyncIfNeeded(&netmap.NetworkMap{
TKAEnabled: true,
TKAHead: a1.Head(),
})
}, b.prefs)
if err != nil {
t.Errorf("tkaSyncIfNeededLocked() failed: %v", err)
}
@ -229,7 +229,7 @@ func TestTKADisablementFlow(t *testing.T) {
err = b.tkaSyncIfNeeded(&netmap.NetworkMap{
TKAEnabled: false,
TKAHead: authority.Head(),
})
}, b.prefs)
if err != nil {
t.Errorf("tkaSyncIfNeededLocked() failed: %v", err)
}
@ -242,7 +242,7 @@ func TestTKADisablementFlow(t *testing.T) {
err = b.tkaSyncIfNeeded(&netmap.NetworkMap{
TKAEnabled: false,
TKAHead: authority.Head(),
})
}, b.prefs)
if err != nil {
t.Errorf("tkaSyncIfNeededLocked() failed: %v", err)
}
@ -465,7 +465,7 @@ func TestTKASync(t *testing.T) {
err = b.tkaSyncIfNeeded(&netmap.NetworkMap{
TKAEnabled: true,
TKAHead: controlAuthority.Head(),
})
}, b.prefs)
if err != nil {
t.Errorf("tkaSyncIfNeededLocked() failed: %v", err)
}

Loading…
Cancel
Save