tailscale/ipn/ipnlocal
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
..
local_test.go ipn: mock controlclient.Client; big ipn.Backend state machine test. 2021-04-30 00:09:35 -04:00
local.go ipn/ipnlocal: avoid initPeerAPIListener crash on certain concurrent actions 2021-06-03 09:48:09 -07:00
loglines_test.go types/logger: add key grinder stats lines to rate-limiting exemption list 2021-05-05 08:25:15 -07:00
peerapi_macios_ext.go ipn/{ipnlocal,localapi}: add localapi handler to dial/proxy file PUTs 2021-04-06 21:31:50 -07:00
peerapi_test.go ipn/ipnlocal: use delete marker files to work around Windows delete problems 2021-04-26 10:59:25 -07:00
peerapi.go ipn/ipnlocal: update peerapi logging of received PUTs 2021-05-04 11:09:02 -07:00
state_test.go ipnlocal: in Start() fast path, don't forget to send Prefs. 2021-05-20 03:35:14 -04:00