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/ipnlocal
James 'zofrex' Sanderson eabc62a9dd
ipn/ipnlocal: don't send LoginFinished unless auth was in progress (#17266)
Before we introduced seamless, the "blocked" state was used to track:

* Whether a login was required for connectivity, and therefore we should
  keep the engine deconfigured until that happened
* Whether authentication was in progress

"blocked" would stop authReconfig from running. We want this when a login is
required: if your key has expired we want to deconfigure the engine and keep
it down, so that you don't keep using exit nodes (which won't work because
your key has expired).

Taking the engine down while auth was in progress was undesirable, so we
don't do that with seamless renewal. However, not entering the "blocked"
state meant that we needed to change the logic for when to send
LoginFinished on the IPN bus after seeing StateAuthenticated from the
controlclient. Initially we changed the "if blocked" check to "if blocked or
seamless is enabled" which was correct in other places.

In this place however, it introduced a bug: we are sending LoginFinished
every time we see StateAuthenticated, which happens even on a down & up, or
a profile switch. This in turn made it harder for UI clients to track when
authentication is complete.

Instead we should only send it out if we were blocked (i.e. seamless is
disabled, or our key expired) or an auth was in progress.

Updates tailscale/corp#31476

Updates tailscale/corp#32645

Fixes #17363

Signed-off-by: James Sanderson <jsanderson@tailscale.com>
3 months ago
..
testdata ipn/ipnlocal: fix the path for writing cert files (#7203) 3 years ago
breaktcp_darwin.go cmd/tailscale: add debug commands to break connections 2 years ago
breaktcp_linux.go cmd/tailscale: add debug commands to break connections 2 years ago
bus.go ipn/local: add the suggested exit node to the ipn bus (#16748) 5 months ago
bus_test.go ipn/ipnlocal: add IPN Bus NotifyRateLimit watch bit NotifyRateLimit 1 year ago
c2n.go control/controlclient,health,ipn/ipnlocal,health: fix deadlock by deleting health reporting 3 months ago
c2n_pprof.go ipn/ipnlocal, engine: avoid runtime/pprof with two usages of ts_omit_debug 3 months ago
c2n_test.go ipn/ipnlocal: make the redactNetmapPrivateKeys test recursive 4 months ago
captiveportal.go feature/featuretags: add build tag to remove captive portal detection 4 months ago
cert.go feature, net/tshttpproxy: pull out support for using proxies as a feature 3 months ago
cert_disabled.go feature/featuretags, all: add ts_omit_acme to disable TLS cert support 4 months ago
cert_test.go ipn/ipnlocal, envknob: make it possible to configure the cert client to act in read-only mode (#15250) 10 months ago
dnsconfig_test.go ipn,net,tsnet,wgengine: make an eventbus mandatory where it is used (#16594) 6 months ago
drive.go feature/drive: start factoring out Taildrive, add ts_omit_drive build tag 4 months ago
drive_tomove.go feature/drive: start factoring out Taildrive, add ts_omit_drive build tag 4 months ago
expiry.go ipn/ipnlocal: use eventbus.Monitor in expiryManager (#17204) 4 months ago
expiry_test.go control/controlclient: introduce eventbus messages instead of callbacks (#16956) 4 months ago
extension_host.go ipn/ipnlocal: make GetExt work earlier, before extension init 8 months ago
extension_host_test.go health,ipn/ipnlocal: introduce eventbus in heath.Tracker (#17085) 4 months ago
local.go ipn/ipnlocal: don't send LoginFinished unless auth was in progress (#17266) 3 months ago
local_test.go appc,ipn/ipnlocal: receive AppConnector updates via the event bus (#17411) 3 months ago
loglines_test.go health,ipn/ipnlocal: introduce eventbus in heath.Tracker (#17085) 4 months ago
netstack.go ipn/ipnlocal: move last unconditional gvisor import, complete ts_omit_netstack support 4 months ago
network-lock.go all: add ts_omit_tailnetlock as a start of making it build-time modular 4 months ago
network-lock_test.go net/netmon: remove usage of direct callbacks from netmon (#17292) 3 months ago
node_backend.go ipn/ipnlocal: introduce the concept of client-side-reachability (#17367) 3 months ago
node_backend_test.go ipn/ipnlocal: introduce the concept of client-side-reachability (#17367) 3 months ago
peerapi.go feature/featuretags: add features for c2n, peerapi, advertise/use routes/exit nodes 3 months ago
peerapi_drive.go feature/drive: start factoring out Taildrive, add ts_omit_drive build tag 4 months ago
peerapi_macios_ext.go net/netmon, add: add netmon.State type alias of interfaces.State 2 years ago
peerapi_test.go ipn/ipnlocal: fix another racy test (#17472) 3 months ago
prefs_metrics.go feature/featuretags: add features for c2n, peerapi, advertise/use routes/exit nodes 3 months ago
profiles.go feature/clientupdate: move clientupdate to a modular feature, disabled for tsnet 3 months ago
profiles_notwindows.go ipn/ipnlocal: refactor and cleanup profileManager 1 year ago
profiles_test.go feature/clientupdate: move clientupdate to a modular feature, disabled for tsnet 3 months ago
profiles_windows.go ipn/ipnlocal: refactor and cleanup profileManager 1 year ago
serve.go ipn/ipnlocal: proxy h2c grpc using net/http.Transport instead of x/net/http2 3 months ago
serve_disabled.go all: add ts_omit_serve, start making tailscale serve/funnel be modular 4 months ago
serve_test.go ipn/ipnlocal: proxy h2c grpc using net/http.Transport instead of x/net/http2 3 months ago
ssh.go ipn/ipnlocal: fix a case where ts_omit_ssh was still linking in x/crypto/ssh 4 months ago
ssh_stub.go ipn/ipnlocal: fix a case where ts_omit_ssh was still linking in x/crypto/ssh 4 months ago
ssh_test.go health,ipn/ipnlocal: introduce eventbus in heath.Tracker (#17085) 4 months ago
state_test.go ipn/ipnlocal: don't send LoginFinished unless auth was in progress (#17266) 3 months ago
tailnetlock_disabled.go all: add ts_omit_tailnetlock as a start of making it build-time modular 4 months ago
web_client.go util/backoff: rename logtail/backoff package to util/backoff 3 months ago
web_client_stub.go derp/derpserver: split off derp.Server out of derp into its own package 4 months ago