summaryrefslogtreecommitdiffstats
path: root/src/web/server/static/static-threaded.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/server/static/static-threaded.c')
-rw-r--r--src/web/server/static/static-threaded.c63
1 files changed, 32 insertions, 31 deletions
diff --git a/src/web/server/static/static-threaded.c b/src/web/server/static/static-threaded.c
index f2a07e405..a4b24c9ac 100644
--- a/src/web/server/static/static-threaded.c
+++ b/src/web/server/static/static-threaded.c
@@ -61,7 +61,7 @@ static struct web_client *web_client_create_on_fd(POLLINFO *pi) {
// the main socket listener - STATIC-THREADED
struct web_server_static_threaded_worker {
- netdata_thread_t thread;
+ ND_THREAD *thread;
int id;
int running;
@@ -394,8 +394,9 @@ cleanup:
// ----------------------------------------------------------------------------
// web server worker thread
-static void socket_listen_main_static_threaded_worker_cleanup(void *ptr) {
- worker_private = (struct web_server_static_threaded_worker *)ptr;
+static void socket_listen_main_static_threaded_worker_cleanup(void *pptr) {
+ worker_private = CLEANUP_FUNCTION_GET_PTR(pptr);
+ if(!worker_private) return;
netdata_log_info("stopped after %zu connects, %zu disconnects (max concurrent %zu), %zu receptions and %zu sends",
worker_private->connected,
@@ -414,7 +415,7 @@ static bool web_server_should_stop(void) {
}
void *socket_listen_main_static_threaded_worker(void *ptr) {
- worker_private = (struct web_server_static_threaded_worker *)ptr;
+ worker_private = ptr;
worker_private->running = 1;
worker_register("WEB");
worker_register_job_name(WORKER_JOB_ADD_CONNECTION, "connect");
@@ -427,26 +428,24 @@ void *socket_listen_main_static_threaded_worker(void *ptr) {
worker_register_job_name(WORKER_JOB_SND_DATA, "send");
worker_register_job_name(WORKER_JOB_PROCESS, "process");
- netdata_thread_cleanup_push(socket_listen_main_static_threaded_worker_cleanup, ptr);
-
- poll_events(&api_sockets
- , web_server_add_callback
- , web_server_del_callback
- , web_server_rcv_callback
- , web_server_snd_callback
- , NULL
- , web_server_should_stop
- , web_allow_connections_from
- , web_allow_connections_dns
- , NULL
- , web_client_first_request_timeout
- , web_client_timeout
- , default_rrd_update_every * 1000 // timer_milliseconds
- , ptr // timer_data
- , worker_private->max_sockets
- );
-
- netdata_thread_cleanup_pop(1);
+ CLEANUP_FUNCTION_REGISTER(socket_listen_main_static_threaded_worker_cleanup) cleanup_ptr = worker_private;
+ poll_events(&api_sockets
+ , web_server_add_callback
+ , web_server_del_callback
+ , web_server_rcv_callback
+ , web_server_snd_callback
+ , NULL
+ , web_server_should_stop
+ , web_allow_connections_from
+ , web_allow_connections_dns
+ , NULL
+ , web_client_first_request_timeout
+ , web_client_timeout
+ , default_rrd_update_every * 1000 // timer_milliseconds
+ , ptr // timer_data
+ , worker_private->max_sockets
+ );
+
return NULL;
}
@@ -454,8 +453,10 @@ void *socket_listen_main_static_threaded_worker(void *ptr) {
// ----------------------------------------------------------------------------
// web server main thread - also becomes a worker
-static void socket_listen_main_static_threaded_cleanup(void *ptr) {
- struct netdata_static_thread *static_thread = (struct netdata_static_thread *)ptr;
+static void socket_listen_main_static_threaded_cleanup(void *pptr) {
+ struct netdata_static_thread *static_thread = CLEANUP_FUNCTION_GET_PTR(pptr);
+ if(!static_thread) return;
+
static_thread->enabled = NETDATA_MAIN_THREAD_EXITING;
// int i, found = 0;
@@ -466,7 +467,7 @@ static void socket_listen_main_static_threaded_cleanup(void *ptr) {
// if(static_workers_private_data[i].running) {
// found++;
// netdata_log_info("stopping worker %d", i + 1);
-// netdata_thread_cancel(static_workers_private_data[i].thread);
+// nd_thread_signal_cancel(static_workers_private_data[i].thread);
// }
// else
// netdata_log_info("found stopped worker %d", i + 1);
@@ -496,7 +497,7 @@ static void socket_listen_main_static_threaded_cleanup(void *ptr) {
}
void *socket_listen_main_static_threaded(void *ptr) {
- netdata_thread_cleanup_push(socket_listen_main_static_threaded_cleanup, ptr);
+ CLEANUP_FUNCTION_REGISTER(socket_listen_main_static_threaded_cleanup) cleanup_ptr = ptr;
web_server_mode = WEB_SERVER_MODE_STATIC_THREADED;
if(!api_sockets.opened)
@@ -548,14 +549,14 @@ void *socket_listen_main_static_threaded(void *ptr) {
snprintfz(tag, sizeof(tag) - 1, "WEB[%d]", i+1);
netdata_log_info("starting worker %d", i+1);
- netdata_thread_create(&static_workers_private_data[i].thread, tag, NETDATA_THREAD_OPTION_DEFAULT,
- socket_listen_main_static_threaded_worker, (void *)&static_workers_private_data[i]);
+ static_workers_private_data[i].thread = nd_thread_create(tag, NETDATA_THREAD_OPTION_DEFAULT,
+ socket_listen_main_static_threaded_worker,
+ (void *)&static_workers_private_data[i]);
}
// and the main one
static_workers_private_data[0].max_sockets = max_sockets / static_threaded_workers_count;
socket_listen_main_static_threaded_worker((void *)&static_workers_private_data[0]);
- netdata_thread_cleanup_pop(1);
return NULL;
}