shutdown acceptor threads on ws shutdown

8 weeks ago

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 29 Jan 2025 20:51:31 +0100 (8 weeks ago)
changeset 571
0fa595aefd0f
parent 570
f95868a8ec37
child 572
e70418bb14b1

shutdown acceptor threads on ws shutdown

src/server/daemon/configmanager.c file | annotate | diff | comparison | revisions
src/server/daemon/configmanager.h file | annotate | diff | comparison | revisions
src/server/daemon/httplistener.c file | annotate | diff | comparison | revisions
src/server/daemon/webserver.c file | annotate | diff | comparison | revisions
--- a/src/server/daemon/configmanager.c	Wed Jan 29 20:40:19 2025 +0100
+++ b/src/server/daemon/configmanager.c	Wed Jan 29 20:51:31 2025 +0100
@@ -87,6 +87,15 @@
     return 0;
 }
 
+int cfgmgr_shutdown(void) {
+    // TODO: this is not threadsafe!!!
+    
+    CxIterator i = cxListIterator(current_config->listeners);
+    cx_foreach(HttpListener*, ls, i) {
+        http_listener_shutdown_acceptors(ls);
+    }
+}
+
 ServerConfiguration *cfgmgr_get_server_config() {
     return current_config;
 }
--- a/src/server/daemon/configmanager.h	Wed Jan 29 20:40:19 2025 +0100
+++ b/src/server/daemon/configmanager.h	Wed Jan 29 20:51:31 2025 +0100
@@ -51,6 +51,8 @@
 
 ServerConfiguration* cfgmgr_get_server_config();
 
+int cfgmgr_shutdown(void);
+
 
 #ifdef	__cplusplus
 }
--- a/src/server/daemon/httplistener.c	Wed Jan 29 20:40:19 2025 +0100
+++ b/src/server/daemon/httplistener.c	Wed Jan 29 20:51:31 2025 +0100
@@ -552,7 +552,8 @@
     // we do it mostly for nicer log messages. The timeout is there
     // for making sure, this function never blocks forever.
     struct timespec ts;
-    ts.tv_sec = time(NULL) + 60;
+    clock_gettime(CLOCK_REALTIME, &ts);
+    ts.tv_sec += 60;
     pthread_cond_timedwait(&listener->shutdown_cond, &listener->shutdown_mutex, &ts);
     
     pthread_mutex_unlock(&listener->shutdown_mutex);
--- a/src/server/daemon/webserver.c	Wed Jan 29 20:40:19 2025 +0100
+++ b/src/server/daemon/webserver.c	Wed Jan 29 20:51:31 2025 +0100
@@ -290,6 +290,7 @@
         re = re->next;
     }
     
+    cfgmgr_shutdown();
     shutdown_threadpools(60);
     
     shutdown_eventhandlers_wait();

mercurial