diff --git a/src/s5p/server.py b/src/s5p/server.py index f2be5fd..42df0cc 100644 --- a/src/s5p/server.py +++ b/src/s5p/server.py @@ -214,6 +214,13 @@ async def _metrics_logger( async def serve(config: Config) -> None: """Start the SOCKS5 proxy server.""" + # register signal handlers early so SIGTERM is never ignored + loop = asyncio.get_running_loop() + stop = loop.create_future() + + for sig in (signal.SIGTERM, signal.SIGINT): + loop.add_signal_handler(sig, lambda s=sig: stop.set_result(s)) + metrics = Metrics() proxy_pool: ProxyPool | None = None @@ -252,12 +259,6 @@ async def serve(config: Config) -> None: ) logger.info(" retries: %d", config.retries) - loop = asyncio.get_running_loop() - stop = loop.create_future() - - for sig in (signal.SIGTERM, signal.SIGINT): - loop.add_signal_handler(sig, lambda s=sig: stop.set_result(s)) - # SIGHUP: hot-reload config (timeout, retries, log_level, pool settings) async def _reload() -> None: if not config.config_file: