diff --git a/dap-sdk/net/core/dap_events.c b/dap-sdk/net/core/dap_events.c index 5bc14c605485a164b3a94987c1b07a4ae1e6292f..6163aec241c0668c2363baa6c321407e76dd72df 100644 --- a/dap-sdk/net/core/dap_events.c +++ b/dap-sdk/net/core/dap_events.c @@ -83,6 +83,7 @@ static uint32_t s_threads_count = 1; static size_t s_connection_timeout = 6000; static struct epoll_event *g_epoll_events = NULL; +static volatile bool bEventsAreActive = true; bool s_workers_init = false; dap_worker_t *s_workers = NULL; @@ -291,13 +292,14 @@ static void *thread_worker_function(void *arg) size_t total_sent; int bytes_sent = 0; - while(1) { + while(bEventsAreActive) { int selected_sockets = epoll_wait(w->epoll_fd, events, DAP_MAX_EPOLL_EVENTS, 1000); if(selected_sockets == -1) { if( errno == EINTR) continue; + log_it(L_ERROR, "Worker thread %d got errno: %d", w->number_thread, errno); break; } @@ -560,6 +562,11 @@ int dap_events_start( dap_events_t *a_events ) return 0; } +void dap_events_stop() +{ + bEventsAreActive = false; +} + /** * @brief dap_events_wait * @param sh diff --git a/dap-sdk/net/core/include/dap_events.h b/dap-sdk/net/core/include/dap_events.h index 8f6f407d0bbbfb5c6566d5065ecda214d1ab0bf7..149784bdca53d168ee0dc58f3feabb5e3f9dcc38 100644 --- a/dap-sdk/net/core/include/dap_events.h +++ b/dap-sdk/net/core/include/dap_events.h @@ -80,6 +80,7 @@ dap_events_t* dap_events_new( ); void dap_events_delete( dap_events_t * sh ); int32_t dap_events_start( dap_events_t *sh ); +void dap_events_stop(); int32_t dap_events_wait( dap_events_t *sh ); uint32_t dap_worker_get_index_min( );