tailscale/ipn
Brad Fitzpatrick 5e7c0b025c ipn/ipnlocal: add some "lockedOnEntry" helpers + guardrails, fix bug
A number of methods in LocalBackend (with suffixed "LockedOnEntry")
require b.mu be held but unlock it on the way out. That's asymmetric
and atypical and error prone.

This adds a helper method to LocalBackend that locks the mutex and
returns a sync.OnceFunc that unlocks the mutex. Then we pass around
that unlocker func down the chain to make it explicit (and somewhat
type check the passing of ownership) but also let the caller defer
unlock it, in the case of errors/panics that happen before the callee
gets around to calling the unlock.

This revealed a latent bug in LocalBackend.DeleteProfile which double
unlocked the mutex.

Updates #11649

Change-Id: I002f77567973bd77b8906bfa4ec9a2049b89836a
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2024-04-06 20:43:54 -07:00
..
conffile ipn/{conffile,ipnlocal}: start booting tailscaled from a config file w/ auth key 2023-10-17 07:12:49 -07:00
ipnauth go.mod, all: move away from inet.af domain seized by Taliban 2024-02-13 19:21:09 -08:00
ipnlocal ipn/ipnlocal: add some "lockedOnEntry" helpers + guardrails, fix bug 2024-04-06 20:43:54 -07:00
ipnserver ipn/ipnserver: always allow Windows SYSTEM user to connect 2024-01-12 14:37:53 -08:00
ipnstate ipn/ipnlocal: populate peers' capabilities (#11365) 2024-04-03 10:55:28 -04:00
localapi ipn/localapi: sort localapi handler map keys 2024-04-05 20:44:11 -07:00
policy ipn,tailconfig: clean up unreleased and removed app connector service 2023-11-09 22:36:52 -08:00
store cmd/k8s-operator,ipn/store/kubestore: patch secrets instead of updating 2023-08-29 13:24:05 -07:00
backend.go tailscale: update tailfs functions and vars to use drive naming (#11597) 2024-04-03 10:09:58 -07:00
conf.go cmd/k8s-operator,ipn/conf.go: fix --accept-routes for proxies (#11453) 2024-03-19 14:54:17 +00:00
doc.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
fake_test.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
ipn_clone.go tailscale: update tailfs functions and vars to use drive naming (#11597) 2024-04-03 10:09:58 -07:00
ipn_test.go net/packet: split off checksum munging into different pkg 2023-10-11 14:25:58 -07:00
ipn_view.go tailscale: update tailfs functions and vars to use drive naming (#11597) 2024-04-03 10:09:58 -07:00
prefs.go tailscale: update tailfs functions and vars to use drive naming (#11597) 2024-04-03 10:09:58 -07:00
prefs_test.go tailscale: update tailfs functions and vars to use drive naming (#11597) 2024-04-03 10:09:58 -07:00
serve.go all: deprecate Node.Capabilities (more), remove PeerChange.Capabilities [capver 89] 2024-03-24 21:08:46 -07:00
serve_test.go {ipn/serve,cmd/tailscale/cli}: move some shared funcs to ipn 2024-03-05 14:30:38 -05:00
store.go ipn: add comment about thread-safety to StateStore 2024-03-06 12:42:18 -06:00
store_test.go ipn: avoid useless no-op WriteState calls 2023-08-07 08:44:24 -07:00