diff --git a/CMakeLists.txt b/CMakeLists.txt
index 241e576efd0d1108735b74ba11daf0f9ae5d97ce..0d963b9c61e698825cf7d1936bd9c2f371493727 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ project(cellframe-sdk C)
 cmake_minimum_required(VERSION 3.0)
 
 set(CMAKE_C_STANDARD 11)
-set(CELLFRAME_SDK_NATIVE_VERSION "2.9-3")
+set(CELLFRAME_SDK_NATIVE_VERSION "2.9-4")
 add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
 set(DAPSDK_MODULES "")
 message("Cellframe modules: ${CELLFRAME_MODULES}")
diff --git a/dap-sdk/net/core/dap_timerfd.c b/dap-sdk/net/core/dap_timerfd.c
index 081f2bd2b26d803084074cb2d351e94e0325c98c..44c26c61fe405ff1ea42f2225b91e3ec55ad2ba2 100644
--- a/dap-sdk/net/core/dap_timerfd.c
+++ b/dap-sdk/net/core/dap_timerfd.c
@@ -243,9 +243,10 @@ static void s_es_callback_timer(struct dap_events_socket *a_event_sock)
             log_it(L_WARNING, "callback_timerfd_read() failed: timerfd_settime() errno=%d\n", errno);
         }
 #elif defined (DAP_OS_BSD)
-	struct kevent * l_event = &a_event_sock->kqueue_event;
-	EV_SET(l_event, 0, a_event_sock->kqueue_base_filter, a_event_sock->kqueue_base_flags,a_event_sock->kqueue_base_fflags,a_event_sock->kqueue_data,a_event_sock);
-	kevent(a_event_sock->worker->kqueue_fd,l_event,1,NULL,0,NULL);
+        dap_worker_add_events_socket_unsafe(a_event_sock,a_event_sock->worker);
+    //struct kevent * l_event = &a_event_sock->kqueue_event;
+    //EV_SET(l_event, 0, a_event_sock->kqueue_base_filter, a_event_sock->kqueue_base_flags,a_event_sock->kqueue_base_fflags,a_event_sock->kqueue_data,a_event_sock);
+    //kevent(a_event_sock->worker->kqueue_fd,l_event,1,NULL,0,NULL);
 #elif defined (DAP_OS_WINDOWS)
         LARGE_INTEGER l_due_time;
         l_due_time.QuadPart = (long long)l_timerfd->timeout_ms * _MSEC;
diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c
index a48574c66e66ce8192658c6f1c36124764142d69..f2f9981bfc0a3fc914e8dbba83872b57c51e7ef1 100644
--- a/dap-sdk/net/core/dap_worker.c
+++ b/dap-sdk/net/core/dap_worker.c
@@ -1130,6 +1130,7 @@ int dap_worker_add_events_socket_unsafe( dap_events_socket_t * a_esocket, dap_wo
     a_worker->poll_count++;
     return 0;
 #elif defined (DAP_EVENTS_CAPS_KQUEUE)
+    a_esocket->worker = a_worker;
     if ( a_esocket->type == DESCRIPTOR_TYPE_QUEUE ){
         return 0;
     }