diff -r e42a8de6d66f -r 4e2bac64c950 src/server/daemon/webserver.c --- a/src/server/daemon/webserver.c Fri Oct 31 21:15:19 2025 +0100 +++ b/src/server/daemon/webserver.c Fri Oct 31 21:31:02 2025 +0100 @@ -284,13 +284,22 @@ srvctrl_shutdown(); } +static volatile int ws_clean_shutdown = TRUE; + +void webserver_stop() { + log_ereport(LOG_INFORM, "webserver stop"); + ws_clean_shutdown = FALSE; + srvctrl_shutdown(); +} + void webserver_end() { - cfgmgr_shutdown(); - shutdown_threadpools(60); - - shutdown_eventhandlers_wait(); // TODO: timeout - - shutdown_logging(); + if(ws_clean_shutdown) { + cfgmgr_shutdown(); + shutdown_threadpools(60); + + shutdown_eventhandlers_wait(); // TODO: timeout + shutdown_logging(); + } // execute restart callbacks RestartCallback *re = atrestart; @@ -301,8 +310,11 @@ free(re); re = re_next; } - - webserver_destroy(); + + if(ws_clean_shutdown) { + // TODO: check if previous shutdown was successful + webserver_destroy(); + } } int webserver_reconfig() {