tailscale/ipn
Avery Pennarun 8a7d35594d ipnlocal: don't assume NeedsLogin immediately after StartLogout().
Previously, there was no server round trip required to log out, so when
you asked ipnlocal to Logout(), it could clear the netmap immediately
and switch to NeedsLogin state.

In v1.8, we added a true Logout operation. ipn.Logout() would trigger
an async cc.StartLogout() and *also* immediately switch to NeedsLogin.
Unfortunately, some frontends would see NeedsLogin and immediately
trigger a new StartInteractiveLogin() operation, before the
controlclient auth state machine actually acted on the Logout command,
thus accidentally invalidating the entire logout operation, retaining
the netmap, and violating the user's expectations.

Instead, add a new LogoutFinished signal from controlclient
(paralleling LoginFinished) and, upon starting a logout, don't update
the ipn state machine until it's received.

Updates: #1918 (BUG-2)
Signed-off-by: Avery Pennarun <apenwarr@tailscale.com>
2021-05-31 14:53:49 -04:00
..
ipnlocal ipnlocal: don't assume NeedsLogin immediately after StartLogout(). 2021-05-31 14:53:49 -04:00
ipnserver all: adapt to opaque netaddr types 2021-05-16 14:52:00 -07:00
ipnstate ipn/{ipnlocal,ipnstate}: add PeerStatus.ID stable ID to status --json output 2021-05-07 09:31:55 -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.go ipn: allow b to be nil in NewBackendServer 2021-05-19 09:33:19 -07:00
message_test.go ipn: allow b to be nil in NewBackendServer 2021-05-19 09:33:19 -07:00
prefs.go ipnlocal: accept a new opts.UpdatePrefs field. 2021-05-04 15:19:25 -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
store.go wgkey: new package 2020-12-30 17:33:02 -08:00
store_test.go Add tstest.PanicOnLog(), and fix various problems detected by this. 2020-05-13 23:12:35 -04:00