* fix: add mutex to prevent concurrent regbot rebuilds (#2719)
updateCarrierRegbots was called via .then() (not awaited) from checkStatus,
allowing concurrent invocations to race on the shared regbots array. The
last writer wins, and concurrent cleanup can stop() regbots still in use,
permanently breaking their timer chain.
Add a boolean mutex (rebuildInProgress) with try/finally to skip concurrent
invocations. Promote rebuild completion log from debug to info for production
visibility. Add standalone test demonstrating both the bug and the fix.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* raise default minimum registration expires from 30s to 90s
Prevents overly aggressive re-registration cycles when the registrar
returns a short Expires value, reducing regbot churn.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix timing issue of ephemeral gateways update/deletion
* Fix for potential regbot Zombie, and other concerns
* address performance concerns in regbot behavior