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( );