Commit 04fd52b
committed
state: stop expiring tagged nodes on logout
tailscale logout sends a past-dated RegisterRequest; handleLogout stamped
that expiry on the node with no IsTagged guard. Tagged nodes have key
expiry permanently disabled (KB 1068), so the stamp left them IsExpired
forever: re-registration kept the stale expiry, the client saw
NodeKeyExpired, rotated its key and retried with a now-spent key ->
authkey already used, forever (or an interactive hang).
Guard handleLogout so a tagged node is never stamped. Defensively clear a
stale past expiry on re-registration (both the pre-auth-key and auth
paths), scoped to IsExpired() so a deliberate future expiry from
headscale nodes expire survives, and exclude tagged nodes from the
expired-node re-validation gate so a spent key is not re-checked.
Fixes #33711 parent f20f1f1 commit 04fd52b
5 files changed
Lines changed: 569 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| 47 | + | |
47 | 48 | | |
48 | 49 | | |
49 | 50 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
233 | 233 | | |
234 | 234 | | |
235 | 235 | | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
236 | 250 | | |
237 | 251 | | |
238 | 252 | | |
| |||
0 commit comments