headscale/hscontrol/policy/v2
Kristoffer Dalby fb137a8fe3 policy/v2: use partial IPSet on group resolution errors in autogroup:self path
In compileACLWithAutogroupSelf, when a group contains a non-existent
user, Group.Resolve() returns a partial IPSet (with IPs from valid
users) alongside an error. The code was discarding the entire result
via `continue`, losing valid IPs. The non-autogroup-self path
(compileFilterRules) already handles this correctly by logging the
error and using the IPSet if non-empty.

Remove the `continue` on error for both source and destination
resolution, matching the existing behavior in compileFilterRules.
Also reorder the IsTagged check before User().ID() comparison
in the same-user node filter to prevent nil dereference on tagged
nodes that have no User set.

Fixes #2990
2026-02-03 16:53:15 +01:00
..
filter.go policy/v2: use partial IPSet on group resolution errors in autogroup:self path 2026-02-03 16:53:15 +01:00
filter_test.go policy/v2: use partial IPSet on group resolution errors in autogroup:self path 2026-02-03 16:53:15 +01:00
policy.go policy/v2: include nodes with empty filters in BuildPeerMap 2026-02-03 16:53:15 +01:00
policy_test.go policy/v2: add test for issue #2990 same-user tagged device 2026-02-03 16:53:15 +01:00
types.go policy/v2: validate SSH source/destination combinations 2026-01-21 17:01:30 +00:00
types_test.go policy: update tests for SSH validation rules 2026-01-21 17:01:30 +00:00
utils.go modernize: run gopls modernize to bring up to 1.25 (#2920) 2025-12-01 19:40:25 +01:00
utils_test.go integration: replace time.Sleep with assert.EventuallyWithT (#2680) 2025-07-10 23:38:55 +02:00