8 weeks ago
shutdown acceptor threads on ws shutdown
--- 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);