src/server/daemon/webserver.c

changeset 619
4e2bac64c950
parent 584
f3ddd6dc8e7b
child 650
3e4f9cdd70b8
--- 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() {

mercurial