ipn/ipnlocal: set default NoStatefulFiltering in ipn.NewPrefs (#12031)

This way the default gets populated on first start, when no existing
state exists to migrate. Also fix `ipn.PrefsFromBytes` to preserve empty
fields, rather than layering `NewPrefs` values on top.

Updates https://github.com/tailscale/corp/issues/19623

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
This commit is contained in:
Andrew Lytvynov
2024-05-07 10:28:22 -07:00
committed by GitHub
parent 78fa698fe6
commit 471731771c
6 changed files with 50 additions and 33 deletions
+4 -3
View File
@@ -373,7 +373,8 @@ func checkPrefs(t *testing.T, p Prefs) {
if p.Equals(p2) {
t.Fatalf("p == p2\n")
}
p2b, err = PrefsFromBytes(p2.ToBytes())
p2b = new(Prefs)
err = PrefsFromBytes(p2.ToBytes(), p2b)
if err != nil {
t.Fatalf("PrefsFromBytes(p2) failed\n")
}
@@ -586,7 +587,7 @@ func TestPrefsPretty(t *testing.T) {
func TestLoadPrefsNotExist(t *testing.T) {
bogusFile := fmt.Sprintf("/tmp/not-exist-%d", time.Now().UnixNano())
p, err := LoadPrefs(bogusFile)
p, err := LoadPrefsWindows(bogusFile)
if errors.Is(err, os.ErrNotExist) {
// expected.
return
@@ -608,7 +609,7 @@ func TestLoadPrefsFileWithZeroInIt(t *testing.T) {
f.Close()
defer os.Remove(path)
p, err := LoadPrefs(path)
p, err := LoadPrefsWindows(path)
if errors.Is(err, os.ErrNotExist) {
// expected.
return