headscale/hscontrol
Kristoffer Dalby 5767ca5085 change: smarter change notifications
This commit replaces the ChangeSet with a simpler bool based
change model that can be directly used in the map builder to
build the appropriate map response based on the change that
has occured. Previously, we fell back to sending full maps
for a lot of changes as that was consider "the safe" thing to
do to ensure no updates were missed.

This was slightly problematic as a node that already has a list
of peers will only do full replacement of the peers if the list
is non-empty, meaning that it was not possible to remove all
nodes (if for example policy changed).

Now we will keep track of last seen nodes, so we can send remove
ids, but also we are much smarter on how we send smaller, partial
maps when needed.

Fixes #2389

Signed-off-by: Kristoffer Dalby <kristoffer@dalby.cc>
2025-12-16 10:12:36 +01:00
..
assets editorconfig: add basic editor config 2025-12-16 10:12:36 +01:00
capver generate: add new patches (#2921) 2025-11-28 17:00:52 +01:00
db golangci-lint: use forbidigo to block time.Sleep (#2946) 2025-12-10 16:45:59 +00:00
derp golangci-lint: use forbidigo to block time.Sleep (#2946) 2025-12-10 16:45:59 +00:00
dns integration: replace time.Sleep with assert.EventuallyWithT (#2680) 2025-07-10 23:38:55 +02:00
mapper change: smarter change notifications 2025-12-16 10:12:36 +01:00
policy policy: more accurate node change 2025-12-16 10:12:36 +01:00
routes debug: add json and improve 2025-09-09 09:40:00 +02:00
state change: smarter change notifications 2025-12-16 10:12:36 +01:00
templates hscontrol: consolidate assets into single package 2025-11-12 08:28:12 -06:00
types change: smarter change notifications 2025-12-16 10:12:36 +01:00
util all: remove deadcode (#2952) 2025-12-10 15:55:15 +01:00
app.go change: smarter change notifications 2025-12-16 10:12:36 +01:00
auth.go make tags first class node owner (#2885) 2025-12-02 12:01:25 +01:00
auth_tags_test.go make tags first class node owner (#2885) 2025-12-02 12:01:25 +01:00
auth_test.go golangci-lint: use forbidigo to block time.Sleep (#2946) 2025-12-10 16:45:59 +00:00
debug.go lint and leftover 2025-09-09 09:40:00 +02:00
grpcv1.go change: smarter change notifications 2025-12-16 10:12:36 +01:00
grpcv1_test.go tags: process tags on registration, simplify policy (#2931) 2025-12-08 18:51:07 +01:00
handlers.go all: remove deadcode (#2952) 2025-12-10 15:55:15 +01:00
metrics.go all: remove deadcode (#2952) 2025-12-10 15:55:15 +01:00
noise.go all: remove deadcode (#2952) 2025-12-10 15:55:15 +01:00
oidc.go change: smarter change notifications 2025-12-16 10:12:36 +01:00
oidc_template_test.go make tags first class node owner (#2885) 2025-12-02 12:01:25 +01:00
platform_config.go Return better web errors to the user (#2398) 2025-02-01 15:25:18 +01:00
poll.go all: remove deadcode (#2952) 2025-12-10 15:55:15 +01:00
suite_test.go Redo OIDC configuration (#2020) 2024-10-02 14:50:17 +02:00
tailsql.go integration: replace time.Sleep with assert.EventuallyWithT (#2680) 2025-07-10 23:38:55 +02:00
templates_consistency_test.go hscontrol: add template HTML consistency test 2025-11-12 08:28:12 -06:00