diff options
| author | Joe Tsai <joetsai@digital-static.net> | 2022-07-05 18:27:31 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-05 18:27:31 -0700 |
| commit | fe3426b4c72aa32e5cc5f1a3cdc7c346ce585940 (patch) | |
| tree | 43e0561bf899f6bc65b1a035e7efbe77fdb3eb77 | |
| parent | d6817d0f22fe2c3dc8c6fcfe9e4d607d7ae59a76 (diff) | |
| download | tailscale-fe3426b4c72aa32e5cc5f1a3cdc7c346ce585940.tar.xz tailscale-fe3426b4c72aa32e5cc5f1a3cdc7c346ce585940.zip | |
logpolicy: fix config initialization bug (#5010)
If ConfigFromFile cannot find the configuration file,
we must not initialize it with NewConfig.
Instead, we need it to fail validation so that it eventually writes
a newly constructed configuration file.
Otherwise, new tailscale instances will never be able store a persistent
log config and start with a new config file upon every bootup.
Signed-off-by: Joe Tsai <joetsai@digital-static.net>
| -rw-r--r-- | logpolicy/logpolicy.go | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/logpolicy/logpolicy.go b/logpolicy/logpolicy.go index 558a9d642..952c3dc79 100644 --- a/logpolicy/logpolicy.go +++ b/logpolicy/logpolicy.go @@ -112,6 +112,8 @@ func NewConfig(collection string) *Config { // and that the PrivateID and PublicID pair are sensible. func (c *Config) Validate(collection string) error { switch { + case c == nil: + return errors.New("config is nil") case c.Collection != collection: return fmt.Errorf("config collection %q does not match %q", c.Collection, collection) case c.PrivateID.IsZero(): @@ -509,11 +511,10 @@ func New(collection string) *Policy { newc, err := ConfigFromFile(cfgPath) if err != nil { earlyLogf("logpolicy.ConfigFromFile %v: %v", cfgPath, err) - newc = NewConfig(collection) } if err := newc.Validate(collection); err != nil { - earlyLogf("logpolicy.Config.Validate for %q: %v", cfgPath, err) - newc := NewConfig(collection) + earlyLogf("logpolicy.Config.Validate for %v: %v", cfgPath, err) + newc = NewConfig(collection) if err := newc.Save(cfgPath); err != nil { earlyLogf("logpolicy.Config.Save for %v: %v", cfgPath, err) } |
