You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/ipn
Brad Fitzpatrick ecfb2639cc 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>
3 years ago
..
ipnlocal ipn/ipnlocal: avoid initPeerAPIListener crash on certain concurrent actions 3 years ago
ipnserver all: adapt to opaque netaddr types 3 years ago
ipnstate ipn/{ipnlocal,ipnstate}: add PeerStatus.ID stable ID to status --json output 3 years ago
localapi ipn/ipnlocal, etc: require file sharing capability to send/recv files 3 years ago
policy ipn/policy: mark peerapi4 and peerapi6 as interesting services 3 years ago
backend.go ipnlocal: accept a new opts.UpdatePrefs field. 3 years ago
doc.go Move Linux client & common packages into a public repo. 4 years ago
fake_test.go ipn{,/ipnlocal}, cmd/tailscale/cli: don't check pref reverts on initial up 3 years ago
handle.go ipn{,/ipnlocal}, cmd/tailscale/cli: don't check pref reverts on initial up 3 years ago
message.go ipn: allow b to be nil in NewBackendServer 3 years ago
message_test.go ipn: allow b to be nil in NewBackendServer 3 years ago
prefs.go ipnlocal: accept a new opts.UpdatePrefs field. 3 years ago
prefs_clone.go Add prefs.LoggedOut to fix several state machine bugs. 3 years ago
prefs_test.go Add prefs.LoggedOut to fix several state machine bugs. 3 years ago
store.go wgkey: new package 3 years ago
store_test.go Add tstest.PanicOnLog(), and fix various problems detected by this. 4 years ago