diff --git a/CMakeLists.txt b/CMakeLists.txt
index 392122de39b91188ec50eb428e346d4d2656439d..5c920801e9d055f394956fa711ad290bc4e86f77 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ project(cellframe-sdk C)
 cmake_minimum_required(VERSION 2.8)
 
 set(CMAKE_C_STANDARD 11)
-set(CELLFRAME_SDK_NATIVE_VERSION "2.6-11")
+set(CELLFRAME_SDK_NATIVE_VERSION "2.6-12")
 add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
 
 set(DAPSDK_MODULES "")
diff --git a/dap-sdk/net/client/dap_client.c b/dap-sdk/net/client/dap_client.c
index 3f03bcb08d4bb0a8e16b28869ca9d6389cdc12fc..caf4db1444099d4c8ac6d40c6720afeaa69752eb 100644
--- a/dap-sdk/net/client/dap_client.c
+++ b/dap-sdk/net/client/dap_client.c
@@ -499,7 +499,7 @@ dap_stream_worker_t * dap_client_get_stream_worker(dap_client_t * a_client)
 
 }
 
-dap_stream_ch_t * dap_client_get_stream_ch(dap_client_t * a_client, uint8_t a_ch_id)
+dap_stream_ch_t * dap_client_get_stream_ch_unsafe(dap_client_t * a_client, uint8_t a_ch_id)
 {
     dap_stream_ch_t * l_ch = NULL;
     dap_client_pvt_t * l_client_internal = a_client ? DAP_CLIENT_PVT(a_client) : NULL;
diff --git a/dap-sdk/net/client/include/dap_client.h b/dap-sdk/net/client/include/dap_client.h
index ecf7d58d9fb3e83cce092d705fa22120b1dfef73..b9a9c7f25cfec6000fd3ddfd426c75be0b951e89 100644
--- a/dap-sdk/net/client/include/dap_client.h
+++ b/dap-sdk/net/client/include/dap_client.h
@@ -132,7 +132,7 @@ const char * dap_client_get_error_str(dap_client_t * a_client);
 const char * dap_client_get_auth_cookie(dap_client_t * a_client);
 dap_stream_t * dap_client_get_stream(dap_client_t * a_client);
 dap_stream_worker_t * dap_client_get_stream_worker(dap_client_t * a_client);
-dap_stream_ch_t * dap_client_get_stream_ch(dap_client_t * a_client, uint8_t a_ch_id);
+dap_stream_ch_t * dap_client_get_stream_ch_unsafe(dap_client_t * a_client, uint8_t a_ch_id);
 const char * dap_client_get_stream_id(dap_client_t * a_client);
 void dap_client_set_active_channels (dap_client_t * a_client, const char * a_active_channels);
 void dap_client_set_auth_cert(dap_client_t * a_client, dap_cert_t *a_cert);
diff --git a/dap-sdk/net/core/include/dap_net.h b/dap-sdk/net/core/include/dap_net.h
index e2bd58db2feb05794d00e7da32f71dc23680da12..ea9e07e4b65a0322f7eb03d40d9a055376287ce2 100644
--- a/dap-sdk/net/core/include/dap_net.h
+++ b/dap-sdk/net/core/include/dap_net.h
@@ -30,12 +30,20 @@
 #include <mswsock.h>
 #include <ws2tcpip.h>
 #include <io.h>
+
+#include "win32/ip.h"
+#include "win32/iphdr.h"
+
+#define s6_addr32 s6_addr
+#define herror perror
 #else
 // for Unix-like systems
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netdb.h>
 #include <arpa/inet.h>
+#include <netinet/in.h>
+
 #endif
 
 int dap_net_resolve_host(const char *a_host, int ai_family, struct sockaddr *a_addr_out);
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 1d79df09da18128ab6c329f20e011de0cba0efe5..9370189c5073d448654ab172e959763d17da0398 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -106,7 +106,7 @@
 static size_t s_max_links_count = 5;// by default 5
 // number of required connections
 static size_t s_required_links_count = 3;// by default 3
-static dap_timerfd_t * s_timer_check = NULL;
+static pthread_t s_net_check_pid;
 
 /**
   * @struct dap_chain_net_pvt
@@ -119,6 +119,9 @@ typedef struct dap_chain_net_pvt{
 #else
     HANDLE state_proc_cond;
 #endif
+
+    dap_events_socket_t * event_state_proc;
+
     pthread_mutex_t state_mutex_cond;
     dap_chain_node_role_t node_role;
     uint32_t  flags;
@@ -173,8 +176,8 @@ static const char * c_net_states[]={
 static dap_chain_net_t * s_net_new(const char * a_id, const char * a_name , const char * a_node_role);
 inline static const char * s_net_state_to_str(dap_chain_net_state_t l_state);
 static int s_net_states_proc(dap_chain_net_t * l_net);
-static void s_timer_check_callback ( void * a_net);
-static void s_timer_check_start( dap_chain_net_t * a_net );
+static void * s_net_check_thread ( void * a_net);
+static void s_net_check_thread_start( dap_chain_net_t * a_net );
 static void s_net_proc_kill( dap_chain_net_t * a_net );
 int s_net_load(const char * a_net_name, uint16_t a_acl_idx);
 
@@ -229,7 +232,9 @@ int dap_chain_net_state_go_to(dap_chain_net_t * a_net, dap_chain_net_state_t a_n
         log_it(L_WARNING,"Already going to state %s",s_net_state_to_str(a_new_state));
     }
     PVT(a_net)->state_target = a_new_state;
-    pthread_mutex_lock( &PVT(a_net)->state_mutex_cond);
+
+    pthread_mutex_lock( &PVT(a_net)->state_mutex_cond); // Preventing call of state_go_to before wait cond will be armed
+    pthread_mutex_unlock( &PVT(a_net)->state_mutex_cond);
     // set flag for sync
     PVT(a_net)->flags |= F_DAP_CHAIN_NET_GO_SYNC;
 #ifndef _WIN32
@@ -237,7 +242,6 @@ int dap_chain_net_state_go_to(dap_chain_net_t * a_net, dap_chain_net_state_t a_n
 #else
     SetEvent( PVT(a_net)->state_proc_cond );
 #endif
-    pthread_mutex_unlock( &PVT(a_net)->state_mutex_cond);
     return 0;
 }
 
@@ -279,11 +283,11 @@ void dap_chain_net_sync_gdb_broadcast(void *a_arg, const char a_op_code, const c
         dap_chain_id_t l_chain_id = l_chain ? l_chain->id : (dap_chain_id_t) {};
         for (dap_list_t *l_tmp = PVT(l_net)->links; l_tmp; l_tmp = dap_list_next(l_tmp)) {
             dap_chain_node_client_t *l_node_client = (dap_chain_node_client_t *)l_tmp->data;
-            dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch(l_node_client->client, dap_stream_ch_chain_get_id());
+            dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch_unsafe(l_node_client->client, dap_stream_ch_chain_get_id());
             if (!l_ch_chain) {
                 continue;
             }
-            dap_stream_ch_chain_pkt_write_unsafe(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_GLOBAL_DB, l_net->pub.id,
+            dap_stream_ch_chain_pkt_write_mt( dap_client_get_stream_worker(l_node_client->client), l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_GLOBAL_DB, l_net->pub.id,
                                                  l_chain_id, l_net->pub.cell_id, l_data_out,
                                                  sizeof(dap_store_obj_pkt_t) + l_data_out->data_size);
         }
@@ -329,13 +333,13 @@ static void s_chain_callback_notify(void * a_arg, dap_chain_t *a_chain, dap_chai
         for (dap_list_t *l_tmp = PVT(l_net)->links; l_tmp; l_tmp = dap_list_next(l_tmp)) {
             dap_chain_node_client_t *l_node_client = (dap_chain_node_client_t *)l_tmp->data;
             uint8_t l_ch_id = dap_stream_ch_chain_get_id(); // Channel id for global_db and chains sync
-            dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch(l_node_client->client, l_ch_id);
+            dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch_unsafe(l_node_client->client, l_ch_id);
             if (!l_ch_chain) {
                 log_it(L_DEBUG,"Can't get stream_ch for id='%c' ", l_ch_id);
                 continue;
             }
-            dap_stream_ch_chain_pkt_write_unsafe(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN, l_net->pub.id,
-                                          a_chain->id, a_id, a_atom, a_atom_size);
+            dap_stream_ch_chain_pkt_write_mt( dap_client_get_stream_worker( l_node_client->client),  l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN,
+                                              l_net->pub.id, a_chain->id, a_id, a_atom, a_atom_size);
         }
     }
 }
@@ -516,7 +520,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
         case NET_STATE_SYNC_GDB:{
             for (dap_list_t *l_tmp = l_pvt_net->links; l_tmp; ) {
                 dap_chain_node_client_t *l_node_client = (dap_chain_node_client_t *)l_tmp->data;
-                dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch(l_node_client->client, dap_stream_ch_chain_get_id());
+                dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch_unsafe(l_node_client->client, dap_stream_ch_chain_get_id());
                 if (!l_ch_chain) { // Channel or stream or client itself closed
                     l_tmp = dap_list_next(l_tmp);
                     dap_chain_node_client_close(l_node_client);
@@ -588,7 +592,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
             bool l_need_flush = false;
             for (dap_list_t *l_tmp = l_pvt_net->links; l_tmp; l_tmp = dap_list_next(l_tmp)) {
                 dap_chain_node_client_t *l_node_client = (dap_chain_node_client_t *)l_tmp->data;
-                dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch(l_node_client->client, dap_stream_ch_chain_get_id());
+                dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch_unsafe(l_node_client->client, dap_stream_ch_chain_get_id());
                 if (!l_ch_chain) { // Channel or stream or client itself closed
                     l_tmp = dap_list_next(l_tmp);
                     dap_chain_node_client_close(l_node_client);
@@ -691,7 +695,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
  * @param a_cfg Network1 configuration
  * @return
  */
-static void s_timer_check_callback ( void *a_net )
+static void *s_net_check_thread ( void *a_net )
 {
     dap_chain_net_t *l_net = (dap_chain_net_t *)a_net;
     dap_chain_net_pvt_t *p_net = (dap_chain_net_pvt_t *)(void *)l_net->pvt;
@@ -699,38 +703,38 @@ static void s_timer_check_callback ( void *a_net )
     // set callback to update data
     //dap_chain_global_db_set_callback_for_update_base(s_net_proc_thread_callback_update_db);
 
-    if ( !(p_net->flags & F_DAP_CHAIN_NET_SHUTDOWN) ) {
-        dap_events_socket_remove_and_delete_unsafe( s_timer_check->events_socket,false);
-    }
+    while(1){
+        if ( !(p_net->flags & F_DAP_CHAIN_NET_SHUTDOWN) ) {
+            return NULL;
+        }
 
-    // check or start sync
-    s_net_states_proc( l_net );
-    if (p_net->flags & F_DAP_CHAIN_NET_GO_SYNC) {
-        s_net_states_proc( l_net );
-    }
-    struct timespec l_to;
-
-    // checking whether new sync is needed
-    time_t l_sync_timeout = 180; // 1800 sec = 30 min
-    clock_gettime(CLOCK_MONOTONIC, &l_to);
-    // start sync every l_sync_timeout sec
-    if(l_to.tv_sec >= p_net->last_sync + l_sync_timeout) {
-        p_net->flags |= F_DAP_CHAIN_NET_GO_SYNC;
+        // check or start sync
         s_net_states_proc( l_net );
+        if (p_net->flags & F_DAP_CHAIN_NET_GO_SYNC) {
+            s_net_states_proc( l_net );
+        }
+        struct timespec l_to;
+
+        // checking whether new sync is needed
+        time_t l_sync_timeout = 180; // 1800 sec = 30 min
+        clock_gettime(CLOCK_MONOTONIC, &l_to);
+        // start sync every l_sync_timeout sec
+        if(l_to.tv_sec >= p_net->last_sync + l_sync_timeout) {
+            p_net->flags |= F_DAP_CHAIN_NET_GO_SYNC;
+            s_net_states_proc( l_net );
+        }
+        sleep(10);
     }
+    return NULL;
 }
 
 /**
  * @brief net_proc_start
  * @param a_cfg
  */
-static void s_timer_check_start( dap_chain_net_t * a_net )
+static void s_net_check_thread_start( dap_chain_net_t * a_net )
 {
-    if ( ! s_timer_check ){
-        dap_timerfd_delete(s_timer_check);
-        s_timer_check = NULL;
-    }
-    s_timer_check=dap_timerfd_start(60000, s_timer_check_callback, a_net  );
+    pthread_create(&s_net_check_pid,NULL, s_net_check_thread, a_net);
 }
 
 
@@ -1739,7 +1743,7 @@ int s_net_load(const char * a_net_name, uint16_t a_acl_idx)
         PVT(l_net)->flags |= F_DAP_CHAIN_NET_GO_SYNC;
 
         // Start the proc thread
-        s_timer_check_start(l_net);
+        s_net_check_thread_start(l_net);
         log_it(L_NOTICE, "Сhain network \"%s\" initialized",l_net_item->name);
         dap_config_close(l_cfg);
     }
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index d312f4f3b8224e91450ded0258d9e2b17ff6b178..17fc21b74105037daad9a3b477f84e4fc74c844f 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -1044,7 +1044,7 @@ int com_node(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply)
 
         log_it(L_NOTICE, "Stream connection established");
         dap_stream_ch_chain_sync_request_t l_sync_request = { { 0 } };
-         dap_stream_ch_t * l_ch_chain = dap_client_get_stream_ch(l_node_client->client, dap_stream_ch_chain_get_id());
+         dap_stream_ch_t * l_ch_chain = dap_client_get_stream_ch_unsafe(l_node_client->client, dap_stream_ch_chain_get_id());
          // fill begin id
          l_sync_request.id_start = (uint64_t) dap_db_log_get_last_id_remote(
                  l_remote_node_info->hdr.address.uint64);
@@ -1058,7 +1058,7 @@ int com_node(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply)
         {
             log_it(L_NOTICE, "Now get node addr");
             uint8_t l_ch_id = dap_stream_ch_chain_net_get_id();
-            dap_stream_ch_t * l_ch_chain = dap_client_get_stream_ch(l_node_client->client, l_ch_id);
+            dap_stream_ch_t * l_ch_chain = dap_client_get_stream_ch_unsafe(l_node_client->client, l_ch_id);
 
             int l_res = dap_chain_node_client_set_callbacks( l_node_client->client, l_ch_id);
 
diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c
index a95864255192283925b47abae97944b9341fa02e..823c4f91a806468ac79039f4fed2c6abf2323fd0 100644
--- a/modules/net/dap_chain_node_client.c
+++ b/modules/net/dap_chain_node_client.c
@@ -181,14 +181,12 @@ static void s_stage_connected_callback(dap_client_t *a_client, void *a_arg)
             l_node_client->callback_connected(l_node_client, a_arg);
         l_node_client->keep_connection = true;
         log_it(L_DEBUG, "Wakeup all who waits");
-        pthread_mutex_lock(&l_node_client->wait_mutex);
         l_node_client->state = NODE_CLIENT_STATE_CONNECTED;
 #ifndef _WIN32
-        pthread_cond_signal(&l_node_client->wait_cond);
+        pthread_cond_broadcast(&l_node_client->wait_cond);
 #else
         SetEvent( l_node_client->wait_cond );
 #endif
-        pthread_mutex_unlock(&l_node_client->wait_mutex);
     }
 }
 
@@ -211,14 +209,12 @@ static void s_ch_chain_callback_notify_packet_in2(dap_stream_ch_chain_net_t* a_c
             dap_chain_node_addr_t *l_addr = (dap_chain_node_addr_t *) a_pkt_net->data;
             memcpy(&l_node_client->cur_node_addr, l_addr, sizeof(dap_chain_node_addr_t));
         }
-        pthread_mutex_lock(&l_node_client->wait_mutex);
         l_node_client->state = NODE_CLIENT_STATE_NODE_ADDR_LEASED;
 #ifndef _WIN32
-        pthread_cond_signal(&l_node_client->wait_cond);
+        pthread_cond_broadcast(&l_node_client->wait_cond);
 #else
         SetEvent( l_node_client->wait_cond );
 #endif
-        pthread_mutex_unlock(&l_node_client->wait_mutex);
         break;
     }
     // get remote node address
@@ -228,14 +224,12 @@ static void s_ch_chain_callback_notify_packet_in2(dap_stream_ch_chain_net_t* a_c
             dap_chain_node_addr_t *l_addr = (dap_chain_node_addr_t *) a_pkt_net->data;
             memcpy(&l_node_client->remote_node_addr, l_addr, sizeof(dap_chain_node_addr_t));
         }
-        pthread_mutex_lock(&l_node_client->wait_mutex);
         l_node_client->state = NODE_CLIENT_STATE_GET_NODE_ADDR;
 #ifndef _WIN32
-        pthread_cond_signal(&l_node_client->wait_cond);
+        pthread_cond_broadcast(&l_node_client->wait_cond);
 #else
             SetEvent( l_node_client->wait_cond );
 #endif
-        pthread_mutex_unlock(&l_node_client->wait_mutex);
             break;
     }
     }
@@ -261,15 +255,13 @@ static void s_ch_chain_callback_notify_packet_in(dap_stream_ch_chain_t* a_ch_cha
                 "%s", (char*) a_pkt->data);
         log_it(L_WARNING, "Received packet DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_ERROR with error \"%s\"",
                 l_node_client->last_error);
-        pthread_mutex_lock(&l_node_client->wait_mutex);
         l_node_client->state = NODE_CLIENT_STATE_ERROR;
 
 #ifndef _WIN32
-        pthread_cond_signal(&l_node_client->wait_cond);
+        pthread_cond_broadcast(&l_node_client->wait_cond);
 #else
         SetEvent( l_node_client->wait_cond );
 #endif
-        pthread_mutex_unlock(&l_node_client->wait_mutex);
         break;
     case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_ALL:
     case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB:
@@ -282,14 +274,12 @@ static void s_ch_chain_callback_notify_packet_in(dap_stream_ch_chain_t* a_ch_cha
             // Process it if need
         }
         log_it(L_INFO, "Sync notify without request to sync back, stay in SYNCED state");
-        pthread_mutex_lock(&l_node_client->wait_mutex);
         l_node_client->state = NODE_CLIENT_STATE_SYNCED;
 #ifndef _WIN32
-        pthread_cond_signal(&l_node_client->wait_cond);
+        pthread_cond_broadcast(&l_node_client->wait_cond);
 #else
         SetEvent( l_node_client->wait_cond );
 #endif
-        pthread_mutex_unlock(&l_node_client->wait_mutex);
     }
     default: break;
     }
@@ -317,14 +307,12 @@ static void s_ch_chain_callback_notify_packet_out(dap_stream_ch_chain_t* a_ch_ch
     case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_ALL:
         case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB:
         case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_CHAINS: {
-        pthread_mutex_lock(&l_node_client->wait_mutex);
         l_node_client->state = NODE_CLIENT_STATE_SYNCED;
 #ifndef _WIN32
-        pthread_cond_signal(&l_node_client->wait_cond);
+        pthread_cond_broadcast(&l_node_client->wait_cond);
 #else
         SetEvent( l_node_client->wait_cond );
 #endif
-        pthread_mutex_unlock(&l_node_client->wait_mutex);
     }
         break;
     default: {
@@ -399,14 +387,12 @@ static void s_ch_chain_callback_notify_packet_R(dap_stream_ch_chain_net_srv_t* a
             // todo to write result to database
             save_stat_to_database(l_request, l_node_client);
             //...
-            pthread_mutex_lock(&l_node_client->wait_mutex);
             l_node_client->state = NODE_CLIENT_STATE_CHECKED;
 #ifndef _WIN32
-            pthread_cond_signal(&l_node_client->wait_cond);
+            pthread_cond_broadcast(&l_node_client->wait_cond);
 #else
             SetEvent( l_node_client->wait_cond );
 #endif
-            pthread_mutex_unlock(&l_node_client->wait_mutex);
             break;
         }
     }
@@ -521,7 +507,7 @@ int dap_chain_node_client_send_ch_pkt(dap_chain_node_client_t *a_client, uint8_t
         return -1;
 
     dap_stream_worker_t *l_stream_worker = dap_client_get_stream_worker(a_client->client);
-    dap_stream_ch_t * l_ch = dap_client_get_stream_ch(a_client->client, a_ch_id);
+    dap_stream_ch_t * l_ch = dap_client_get_stream_ch_unsafe(a_client->client, a_ch_id);
     if(l_ch) {
 //        dap_stream_ch_chain_net_t * l_ch_chain = DAP_STREAM_CH_CHAIN_NET(l_ch);
         dap_stream_ch_pkt_write_mt(l_stream_worker , l_ch , a_type, a_pkt_data, a_pkt_data_size);
@@ -621,7 +607,7 @@ int dap_chain_node_client_set_callbacks(dap_client_t *a_client, uint8_t a_ch_id)
         dap_client_pvt_t * l_client_internal = DAP_CLIENT_PVT(a_client);
         dap_stream_ch_t * l_ch = NULL;
         if(l_client_internal)
-            l_ch = dap_client_get_stream_ch(a_client, a_ch_id);
+            l_ch = dap_client_get_stream_ch_unsafe(a_client, a_ch_id);
         if(l_ch) {
             // C
             if(a_ch_id == dap_stream_ch_chain_get_id()) {
diff --git a/modules/net/include/dap_chain_net.h b/modules/net/include/dap_chain_net.h
index 15470f9fdc71a2f62996c63565269e0540bf5416..d166e2b156af219ddfcd7256b2368210571ab5d9 100644
--- a/modules/net/include/dap_chain_net.h
+++ b/modules/net/include/dap_chain_net.h
@@ -25,26 +25,11 @@ along with any CellFrame SDK based project.  If not, see <http://www.gnu.org/lic
 
 #pragma once
 
-#ifndef _WIN32
-#include <sys/socket.h>
-#include <netinet/in.h>
-#else
-#include <winsock2.h>
-#include <windows.h>
-#include <mswsock.h>
-#include <ws2tcpip.h>
-
-#include "win32/ip.h"
-#include "win32/iphdr.h"
-#define s6_addr32 s6_addr
-#define herror perror
-#endif
-
-
 #include <stdint.h>
 #include <string.h>
 #include "dap_strfuncs.h"
 #include "dap_string.h"
+#include "dap_net.h"
 #include "dap_chain_common.h"
 #include "dap_chain_node.h"
 #include "dap_chain.h"
diff --git a/modules/net/include/dap_chain_node_client.h b/modules/net/include/dap_chain_node_client.h
index de35fd3d8adb6f41621de7678c5203c57bf6d149..788403989d55ea752d633b7b06356031006027cc 100644
--- a/modules/net/include/dap_chain_node_client.h
+++ b/modules/net/include/dap_chain_node_client.h
@@ -64,7 +64,7 @@ typedef struct dap_chain_node_client {
     pthread_cond_t wait_cond;
     #else
     HANDLE wait_cond;
-#endif
+    #endif
     pthread_mutex_t wait_mutex;
 
     // For hash indexing
diff --git a/modules/service/vpn/dap_chain_net_vpn_client.c b/modules/service/vpn/dap_chain_net_vpn_client.c
index 3ad83911090d69415b2a787e7e79098a3d5d5e21..25042bf8d5610074c96305325a5f9c576f2e367f 100644
--- a/modules/service/vpn/dap_chain_net_vpn_client.c
+++ b/modules/service/vpn/dap_chain_net_vpn_client.c
@@ -101,7 +101,7 @@ dap_stream_ch_t* dap_chain_net_vpn_client_get_stream_ch(void)
 {
     if(!s_vpn_client)
         return NULL;
-    dap_stream_ch_t *l_stream = dap_client_get_stream_ch(s_vpn_client->client, DAP_STREAM_CH_ID_NET_SRV_VPN);
+    dap_stream_ch_t *l_stream = dap_client_get_stream_ch_unsafe(s_vpn_client->client, DAP_STREAM_CH_ID_NET_SRV_VPN);
     return l_stream;
 }
 
@@ -468,7 +468,7 @@ int dap_chain_net_vpn_client_check(dap_chain_net_t *a_net, const char *a_ipv4_st
     // send first packet to server
     {
         uint8_t l_ch_id = dap_stream_ch_chain_net_srv_get_id(); // Channel id for chain net request = 'R'
-        dap_stream_ch_t *l_ch = dap_client_get_stream_ch(s_vpn_client->client, l_ch_id);
+        dap_stream_ch_t *l_ch = dap_client_get_stream_ch_unsafe(s_vpn_client->client, l_ch_id);
         if(l_ch) {
             dap_stream_ch_chain_net_srv_pkt_test_t *l_request = DAP_NEW_Z_SIZE(dap_stream_ch_chain_net_srv_pkt_test_t, sizeof(dap_stream_ch_chain_net_srv_pkt_test_t) + a_data_size_to_send);
             l_request->net_id.uint64 = a_net->pub.id.uint64;
@@ -560,7 +560,7 @@ int dap_chain_net_vpn_client_start(dap_chain_net_t *a_net, const char *a_ipv4_st
     // send first packet to server
     {
         uint8_t l_ch_id = dap_stream_ch_chain_net_srv_get_id(); // Channel id for chain net request = 'R'
-        dap_stream_ch_t *l_ch = dap_client_get_stream_ch(s_vpn_client->client, l_ch_id);
+        dap_stream_ch_t *l_ch = dap_client_get_stream_ch_unsafe(s_vpn_client->client, l_ch_id);
         if(l_ch) {
             dap_stream_ch_chain_net_srv_pkt_request_t l_request;
             memset(&l_request, 0, sizeof(dap_stream_ch_chain_net_srv_pkt_request_t));
@@ -602,7 +602,7 @@ dap_chain_net_vpn_client_status_t dap_chain_net_vpn_client_status(void)
 {
     if(s_vpn_client) {
         uint8_t l_ch_id = dap_stream_ch_chain_net_srv_get_id(); // Channel id for chain net request = 'R'
-        dap_stream_ch_t *l_ch = dap_client_get_stream_ch(s_vpn_client->client, l_ch_id);
+        dap_stream_ch_t *l_ch = dap_client_get_stream_ch_unsafe(s_vpn_client->client, l_ch_id);
         if(!l_ch)
             return VPN_CLIENT_STATUS_CONN_LOST;
     }