tailscale/ipn
Brad Fitzpatrick 1cd4e11b26 ipn/ipnlocal: avoid initPeerAPIListener crash on certain concurrent actions
We were crashing on in initPeerAPIListener when called from
authReconfig when b.netMap is nil. But authReconfig already returns
before the call to initPeerAPIListener when b.netMap is nil, but it
releases the b.mu mutex before calling initPeerAPIListener which
reacquires it and assumes it's still nil.

The only thing that can be setting it to nil is setNetMapLocked, which
is called by ResetForClientDisconnect, Logout/logout, or Start, all of
which can happen during an authReconfig.

So be more defensive.

Fixes #1996

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
(cherry picked from commit ecfb2639cc)
2021-06-03 09:48:09 -07:00
..
ipnlocal ipn/ipnlocal: avoid initPeerAPIListener crash on certain concurrent actions 2021-06-03 09:48:09 -07:00
ipnserver cmd/tailscaled: don't block ipnserver startup behind engine init on Windows 2021-04-20 22:26:27 -07:00
ipnstate ipn/{ipnlocal,ipnstate}: add PeerStatus.ID stable ID to status --json output 2021-05-07 09:32:28 -07:00
localapi ipn/ipnlocal, etc: require file sharing capability to send/recv files 2021-04-16 10:58:19 -07:00
policy ipn/policy: mark peerapi4 and peerapi6 as interesting services 2021-04-01 11:57:24 -07:00
backend.go ipnlocal: accept a new opts.UpdatePrefs field. 2021-05-04 15:19:25 -04:00
doc.go Move Linux client & common packages into a public repo. 2020-02-09 09:32:57 -08:00
fake_test.go ipn{,/ipnlocal}, cmd/tailscale/cli: don't check pref reverts on initial up 2021-04-18 08:12:18 -07:00
handle.go ipn{,/ipnlocal}, cmd/tailscale/cli: don't check pref reverts on initial up 2021-04-18 08:12:18 -07:00
message_test.go ipn: define NewBackendServer nil as not affecting Backend's NotifyCallback 2021-04-22 15:56:54 -07:00
message.go ipn: allow b to be nil in NewBackendServer 2021-05-19 14:22:26 -04:00
prefs_clone.go Add prefs.LoggedOut to fix several state machine bugs. 2021-04-30 09:18:13 -04:00
prefs_test.go Add prefs.LoggedOut to fix several state machine bugs. 2021-04-30 09:18:13 -04:00
prefs.go ipnlocal: accept a new opts.UpdatePrefs field. 2021-05-04 15:19:25 -04:00
store_test.go Add tstest.PanicOnLog(), and fix various problems detected by this. 2020-05-13 23:12:35 -04:00
store.go wgkey: new package 2020-12-30 17:33:02 -08:00