Files
ziti/router/handler_ctrl
Paul Lorenz de2ba06f98 Lift link fault handling off the control channel receive goroutine
A fault was handled by spawning a goroutine per message, so a burst of faults
spawned without limit. Handling them inline instead would put the burst on the
receive goroutine, which carries every other default priority message on that
underlay.

- adds a pool for work lifted off a control channel's receive goroutine, kept separate from the rate limiter pool, whose workers park waiting for controller send capacity; sharing it would make receiving depend on the very back-pressure that lifting work off the receive goroutine exists to survive
- hands fault handling to that pool, and falls back to spawning when the pool is full rather than dropping, since a dropped fault leaves a dead link marked up with no repair loop behind it
- counts the fallbacks, so the pool being too small is visible rather than silent
- sizes the queue generously and the worker count modestly: the work arrives in bursts, one per controller reconnect, but is per control channel and there are only ever a handful of those
2026-10-17 22:07:44 -04:00
..
2026-01-28 15:01:35 -05:00