mirror of
https://github.com/Routstr/routstr-core.git
synced 2026-10-05 12:28:22 +00:00
A node runner who configures the NSEC through the admin UI (rather than the NSEC env var) was never announced. The kind 38421 publish task was only created at boot, gated on an NSEC already being present: saving the key stored it and updated the live settings singleton, but nothing re-launched the task, so the provider stayed invisible on relays until the process was restarted. Start the task unconditionally and restructure announce_provider into the idle-and-re-read loop that publish_usage_analytics already uses: it waits while there is no NSEC, re-derives the identity whenever the key changes, and re-reads endpoints, mints and relays every iteration. The long re-announce sleep is now ticked so a replaced identity is announced promptly instead of up to 24h later. Relay backoff state is hoisted so it survives an idle poll, a full cycle and an identity change. This also covers the cases that previously killed the task until a restart: an invalid NSEC, or a node with no reachable endpoint (HTTP_URL left at its http://localhost:8000 default and no onion address) now idle and recover as soon as the configuration is fixed.