tailscale/ipn
kari-ts 7355116c05
ipn/store: make WriteState(id, nil) delete key instead of adding nil entry (#19920)
All StateStore implementations store a nil value in the cache map when WriteState is called with a nil byte slice instead of deleting the key. This causes ReadState to return (nil, nil) instead of (nil, ErrStateNotExist), since the key is still present in the map.

This breaks reset-auth in Windows, Linux, and Android, and the node can't log back in without manually editing the state file. (macOS uses a different state store)
DeleteProfile, DeleteAllProfilesForUser, setUnattendedModeAsConfigured are impacted but don't seem to break because the deleted keys are not reread.

This deletes the key from the cache instead.

Fixes tailscale/corp#42477

Signed-off-by: kari-ts <kari@tailscale.com>
2026-05-29 11:22:14 -07:00
..
auditlog all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
conffile all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
desktop ipn/desktop: use runtime.Pinner to force heap-allocation of msg 2026-04-07 12:55:11 -05:00
ipnauth all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
ipnext feature/conn25,ipn/ipnext,ipn/ipnlocal: add ExtraRouterConfigRoutes hook 2026-03-25 19:28:33 -07:00
ipnlocal ipn/store: make WriteState(id, nil) delete key instead of adding nil entry (#19920) 2026-05-29 11:22:14 -07:00
ipnserver ipn/ipnserver: use peercreds for actor.Username on freebsd (for Taildrive) 2026-03-24 20:35:56 -07:00
ipnstate all: update a few more references to network/tailnet lock 2026-05-28 16:44:16 +01:00
lapitest types/ptr: deprecate ptr.To, use Go 1.26 new 2026-03-05 20:13:18 -08:00
localapi ipn/ipnlocal, control/controlclient: process node adds/removes in constant time 2026-05-21 09:26:19 -07:00
policy all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
store ipn/store: make WriteState(id, nil) delete key instead of adding nil entry (#19920) 2026-05-29 11:22:14 -07:00
backend_test.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
backend.go cmd/containerboot: track peers from IPN bus updates, stop using netmap.NetworkMap 2026-05-27 14:12:48 -07:00
conf_test.go ipn: reject advertised routes with non-address bits set (#18649) 2026-03-20 10:10:43 -07:00
conf.go ipn: fix the typo causing NoSNAT always set to true (#19110) 2026-03-24 16:41:58 -04:00
doc.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
ipn_clone.go tailcfg: reintroduce UserProfile.Groups 2026-03-09 11:08:45 +00:00
ipn_test.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
ipn_view.go tailcfg: reintroduce UserProfile.Groups 2026-03-09 11:08:45 +00:00
prefs_test.go ipn: improve --exit-node hostname error during startup 2026-05-28 16:43:45 +01:00
prefs.go ipn: improve --exit-node hostname error during startup 2026-05-28 16:43:45 +01:00
serve_expand_test.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
serve_test.go cmd/vet: add subtestnames analyzer; fix all existing violations 2026-04-05 15:52:51 -07:00
serve.go ipn/ipnlocal, control/controlclient: process node adds/removes in constant time 2026-05-21 09:26:19 -07:00
store_test.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
store.go ipn/store: make WriteState(id, nil) delete key instead of adding nil entry (#19920) 2026-05-29 11:22:14 -07:00