v0.29.2
NationalSecurityAgency/ghidrav0.29.2Jul 1, 2026by github-actions[bot]
Upgrading?
AI Summary
A stability patch addressing map generation concurrency and client compatibility. Policy reads now use a read lock so map generation no longer serializes on the policy lock, preventing mass-reconnect stalls and `unexpected EOF` retry loops. The release also adds WebSocket GET support for /ts2021 and gracefully handles nodes with invalid FQDNs.
Key Highlights
- Map generation no longer serializes on the policy lock, fixing reconnect storms on `autogroup:self` and relay policies
- /ts2021 now accepts WebSocket GET upgrades, enabling Tailscale JS/WASM control clients to connect
- Nodes with invalid FQDNs (empty or too long) are skipped rather than breaking map delivery
- Offending node names are logged at startup along with the fix command
- Long-poll setup failures now return an HTTP error instead of failing silently
New Features
- WebSocket GET registration for /ts2021 with integration tests using a real WASM client
- Startup validation and logging of nodes with map-breaking data
- Reject renames whose resulting FQDN exceeds the hostname limit
- Concurrent-safe policy reads via RLock
Full Release Notes
## Changes - Fix map generation serializing on the policy lock, so a mass reconnect on `autogroup:self`, via or relay policies no longer stalls clients into `unexpected EOF` retry loops [#3358](https://github.com/juanfont/headscale/pull/3358) - Fix `/ts2021` rejecting the WebSocket `GET` upgrade with 405, which prevented Tailscale JS/WASM control clients from connecting [#3359](https://github.com/juanfont/headscale/pull/3359) - Gracefully handle nodes with an invalid FQDN (empty or too long) instead of failing map delivery; offending names are logged at startup with the fix command [#3349](https://github.com/juanfont/headscale/pull/3349) ## Upgrade Please follow the steps outlined in the [upgrade guide](https://headscale.net/stable/setup/upgrade/) to update your existing Headscale installation. ## Changelog * 8eea89488c642f3d5f617fab5493d5f51f6f4ad0 CHANGELOG: drop unreleased 0.30.0 stub * f708c5b0108ac2ba5ff384ae9b85bdef488e1ffc CHANGELOG: note /ts2021 WebSocket GET fix * 735742e3eea9be93c42c2bd76c9641a74dc11e20 CHANGELOG: note 0.29.2 invalid-name map fix * 3ac33cf1d5fa66bafcdf11fd0919d10f118ee8ea CHANGELOG: shorten 0.29.2 invalid-name entry, set date * f885d87827bcae30a07063f2723cd03458144a00 Fix invalid ip syntax * 1ec7b7fb726ea6270a1eb459534753ef27eda736 hscontrol: register /ts2021 for WebSocket GET * 8f4e69d2a643f41378275c1b33395448ba8a596d integration: add TS2021 WebSocket tests to CI matrix * e7851ef8815248699833ac82fc7bd4d127a05713 integration: test /ts2021 WebSocket GET with a real WASM client * 9d1327458fb21b240ea8078e64aa09ed30b59a96 mapper,policy: add reconnect-storm and lock-concurrency regression tests * ec6719736806e53f1aad1e219670bb8b79476052 mapper: skip peers with invalid names instead of failing the map * d4f2acf3ab3cada875ab88eab4e0f81e4118cd12 policy: take RLock for reads so map generation runs concurrently * 5fb76eb231f105c67ff38316958a889ab4b1534b poll: return an HTTP error on long-poll setup failure * fd154fdb663d4992fb15cd95796c4791e48b096f state: log nodes with map-breaking data at startup * 9c9206a92b7b3ca416e955f472e7f002e9215b75 state: reject renames whose FQDN exceeds the hostname limit
Related Repositories
《Hello 算法》:动画图解、一键运行的数据结构与算法教程。支持简中、繁中、English、日本語,提供 Python, Java, C++, C, C#, JS, Go, Swift, Rust, Ruby, Kotlin, TS, Dart 等代码实现
Design patterns implemented in Java
Chat2DB is a free, cross-platform, local-first database client and SQL workspace for developers, DBAs, analysts, and data teams. Connect to 40+ databases, manage data, edit and run SQL, and use your own AI model to generate, explain, and optimize queries. Available on desktop, web, Docker, and CLI, with MCP support.