headscale/hscontrol/state
Kristoffer Dalby df184e5276 state: fix expiry handling during node tag conversion
Previously, expiry handling ran BEFORE processReauthTags(), using the
old tagged status to determine whether to set/clear expiry. This caused:

- Personal → Tagged: Expiry remained set (should be cleared to nil)
- Tagged → Personal: Expiry remained nil (should be set from client)

Move expiry handling after tag processing and handle all four transition
cases based on the new tagged status:

- Tagged → Personal: Set expiry from client request
- Personal → Tagged: Clear expiry (tagged nodes don't expire)
- Personal → Personal: Update expiry from client
- Tagged → Tagged: Keep existing nil expiry

Fixes #3048
2026-02-04 15:44:55 +01:00
..
debug.go db: use PolicyManager for RequestTags migration 2026-01-21 15:10:29 +01:00
debug_test.go hscontrol/state: make NodeStore batch configuration tunable (#2886) 2025-11-28 16:38:29 +01:00
endpoint_test.go hscontrol/state: make NodeStore batch configuration tunable (#2886) 2025-11-28 16:38:29 +01:00
ephemeral_test.go hscontrol/state: make NodeStore batch configuration tunable (#2886) 2025-11-28 16:38:29 +01:00
maprequest.go stability and race conditions in auth and node store (#2781) 2025-10-16 12:17:43 +02:00
maprequest_test.go make tags first class node owner (#2885) 2025-12-02 12:01:25 +01:00
node_store.go cli: ensure tagged-devices is included in profile list (#2991) 2026-01-09 16:31:23 +01:00
node_store_test.go policy: more accurate node change 2025-12-16 10:12:36 +01:00
state.go state: fix expiry handling during node tag conversion 2026-02-04 15:44:55 +01:00
tags.go Conversion from personal to tagged node is reversible 2026-01-24 17:18:59 +01:00
test_helpers.go hscontrol/state: make NodeStore batch configuration tunable (#2886) 2025-11-28 16:38:29 +01:00