fix: run full reload after HTTP config publish, not just config.reload()

HTTP config-mutating endpoints (publish, rollback, channel CRUD, user
self-update) were calling config.reload() directly, which only refreshed
the in-memory config dict. This skipped re-applying host.dyn/host.watched
flags to live Host objects, so enabling dyndns via the UI had no effect
until a SIGHUP was sent.

Wire a reload_callback through http.start() that calls the same
reload_configuration() function used by the SIGHUP handler, ensuring
host attributes, notify module, users, and threshold checker are all
updated on every config publish.

Also fix unmatched quote in udp.py f-string log message.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Andreas Wrede
2026-05-12 15:05:52 -04:00
parent a00282913b
commit 817ae064af
3 changed files with 27 additions and 10 deletions
+4
View File
@@ -242,6 +242,9 @@ async def _run_async(config, config_path=None):
# upgrade or config change between runs).
threshold_checker.purge_stale_alerts(hbdclass)
async def _http_reload_callback():
await reload_configuration(config, config_path, components)
# HTTP server (asyncio-based via aiohttp)
try:
http_task = asyncio.create_task(
@@ -255,6 +258,7 @@ async def _run_async(config, config_path=None):
verbose=config.get("verbose", False),
get_now=lambda: time.time(),
VER="",
reload_callback=_http_reload_callback,
)
)
logger.info(