headscale/hscontrol
Kristoffer Dalby b113655b71 all: implement PingRequest for node connectivity checking
Implement tailcfg.PingRequest support so the control server can verify
whether a connected node is still reachable. This is the foundation for
faster offline detection (currently ~16min due to Go HTTP/2 TCP retransmit
behavior) and future C2N communication.

The server sends a PingRequest via MapResponse with a unique callback
URL. The Tailscale client responds with a HEAD request to that URL,
proving connectivity. Round-trip latency is measured.

Wire PingRequest through the Change → Batcher → MapResponse pipeline,
add a ping tracker on State for correlating requests with responses,
add ResolveNode for looking up nodes by ID/IP/hostname, and expose a
/debug/ping page (elem-go form UI) and /machine/ping-response endpoint.

Updates #2902
Updates #2129
2026-04-15 10:53:35 +01:00
..
assets assets: fix logo alignment and error icon centering 2026-04-13 17:23:47 +01:00
capver capver: regenerate for tailscale v1.96 2026-04-08 13:00:22 +01:00
db all: apply formatter changes 2026-04-13 17:23:47 +01:00
derp all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
dns Fix typo in comment about fsnotify behavior 2026-02-27 15:23:06 +01:00
mapper all: implement PingRequest for node connectivity checking 2026-04-15 10:53:35 +01:00
policy all: apply formatter changes 2026-04-13 17:23:47 +01:00
routes all: upgrade to Go 1.26rc2 and modernize codebase 2026-02-08 12:35:23 +01:00
servertest state: replace zcache with bounded LRU for auth cache 2026-04-10 14:09:57 +01:00
state all: implement PingRequest for node connectivity checking 2026-04-15 10:53:35 +01:00
templates all: implement PingRequest for node connectivity checking 2026-04-15 10:53:35 +01:00
types all: implement PingRequest for node connectivity checking 2026-04-15 10:53:35 +01:00
util all: apply formatter changes 2026-04-13 17:23:47 +01:00
app.go all: implement PingRequest for node connectivity checking 2026-04-15 10:53:35 +01:00
auth.go auth: check machine key on tailscaled-restart fast path 2026-04-10 14:09:57 +01:00
auth_tags_test.go state: replace zcache with bounded LRU for auth cache 2026-04-10 14:09:57 +01:00
auth_test.go state: replace zcache with bounded LRU for auth cache 2026-04-10 14:09:57 +01:00
debug.go all: implement PingRequest for node connectivity checking 2026-04-15 10:53:35 +01:00
grpcv1.go state: replace zcache with bounded LRU for auth cache 2026-04-10 14:09:57 +01:00
grpcv1_test.go hscontrol: add tests for SetTags user_id database persistence 2026-04-08 14:32:08 +01:00
handlers.go oidc: render HTML error pages for browser-facing failures 2026-04-13 17:23:47 +01:00
handlers_test.go oidc: render HTML error pages for browser-facing failures 2026-04-13 17:23:47 +01:00
metrics.go all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
noise.go all: implement PingRequest for node connectivity checking 2026-04-15 10:53:35 +01:00
noise_test.go hscontrol: validate machine key and bind src/dst in SSH check handler 2026-04-10 14:09:57 +01:00
oidc.go oidc: render HTML error pages for browser-facing failures 2026-04-13 17:23:47 +01:00
oidc_confirm_test.go oidc: add confirmation page for node registration 2026-04-10 14:09:57 +01:00
oidc_template_test.go oidc: render HTML error pages for browser-facing failures 2026-04-13 17:23:47 +01:00
oidc_test.go oidc: make email verification configurable 2025-12-18 11:42:32 +00:00
platform_config.go all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
poll.go types: add node.expiry config, deprecate oidc.expiry 2026-04-08 13:00:22 +01:00
poll_test.go poll: fix poll test linter violations 2026-03-12 01:27:34 -07:00
tailsql.go all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
templates_consistency_test.go oidc: render HTML error pages for browser-facing failures 2026-04-13 17:23:47 +01:00