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/control/controlclient
Avery Pennarun ee19c53063 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>
5 years ago
..
auto.go ipnlocal: don't assume NeedsLogin immediately after StartLogout(). 5 years ago
client.go controlclient: extract a Client interface and rename Client->Auto. 5 years ago
controlclient_test.go ipnlocal: don't assume NeedsLogin immediately after StartLogout(). 5 years ago
debug.go tailcfg, control/controlclient: add goroutine dump debug feature 5 years ago
debug_test.go tailcfg, control/controlclient: add goroutine dump debug feature 5 years ago
direct.go controlclient: update Persist.LoginName when it changes. 5 years ago
direct_test.go control/controlclient: break direct.go into map.go (+tests), add mapSession 5 years ago
hostinfo_linux.go hostifo: update LXC, add Cloud Run. 5 years ago
hostinfo_windows.go control/controlclient: cache Windows version 5 years ago
map.go tailcfg, control/controlclient: accept nil MapResponse.Node (mapver 18) 5 years ago
map_test.go tailcfg, control/controlclient: accept nil MapResponse.Node (mapver 18) 5 years ago
sign.go control/controlclient: sign RegisterRequest (#1549) 5 years ago
sign_supported.go control/controlclient: return correct certificate 5 years ago
sign_unsupported.go control/controlclient: sign RegisterRequest (#1549) 5 years ago
status.go ipnlocal: don't assume NeedsLogin immediately after StartLogout(). 5 years ago