From 0ba1f0455dad0e147515f28fbda82362661474a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Al=D0=B5x=D0=B0nder=20Lysik=D0=BEv?=
 <alexander.lysikov@demlabs.net>
Date: Wed, 2 Sep 2020 23:08:59 +0500
Subject: [PATCH] fixed vpn-client

---
 dap-sdk/net/core/dap_events_socket.c               |  3 ++-
 .../chain-net-srv/dap_stream_ch_chain_net_srv.c    |  1 +
 modules/service/vpn/dap_chain_net_vpn_client_tun.c | 14 ++++++++------
 3 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c
index 6c65684a56..dbf620df7b 100644
--- a/dap-sdk/net/core/dap_events_socket.c
+++ b/dap-sdk/net/core/dap_events_socket.c
@@ -743,7 +743,8 @@ bool dap_events_socket_check_unsafe(dap_worker_t * a_worker,dap_events_socket_t
  */
 void dap_events_socket_remove_and_delete_mt(dap_worker_t * a_w,  dap_events_socket_t *a_es )
 {
-    dap_events_socket_queue_ptr_send( a_w->queue_es_delete, a_es );
+    if(a_w)
+        dap_events_socket_queue_ptr_send( a_w->queue_es_delete, a_es );
 }
 
 /**
diff --git a/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c b/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c
index 7d1361e629..3c4c0bdda9 100644
--- a/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c
+++ b/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c
@@ -597,6 +597,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch , void* a_arg)
                     l_client->ch = a_ch;
                     l_client->stream_worker = a_ch->stream_worker;
                     l_client->ts_created = time(NULL);
+                    l_client->session_id = a_ch->stream->session->id;
                     l_srv->callback_client_success(l_srv, l_success->hdr.usage_id,  l_client, l_success, l_success_size );
                     //l_success->hdr.net_id, l_success->hdr.srv_uid, l_success->hdr.usage_id
                 }
diff --git a/modules/service/vpn/dap_chain_net_vpn_client_tun.c b/modules/service/vpn/dap_chain_net_vpn_client_tun.c
index 4c117f905b..f0b93b1737 100644
--- a/modules/service/vpn/dap_chain_net_vpn_client_tun.c
+++ b/modules/service/vpn/dap_chain_net_vpn_client_tun.c
@@ -418,12 +418,12 @@ int dap_chain_net_vpn_client_tun_create(const char *a_ipv4_addr_str, const char
             .delete_callback = m_client_tun_delete
     };
 
-    s_tun_events_socket = dap_events_socket_wrap_no_add(NULL, s_fd_tun, &l_s_callbacks);
+    s_tun_events_socket = dap_events_socket_wrap_no_add(dap_events_get_default(), s_fd_tun, &l_s_callbacks);
     s_tun_events_socket->type = DESCRIPTOR_TYPE_FILE;
     dap_worker_add_events_socket_auto(s_tun_events_socket);
     s_tun_events_socket->_inheritor = NULL;
 
-    return 0;
+    //return 0;
 
     //m_tunDeviceName = dev;
     //m_tunSocket = fd;
@@ -432,10 +432,12 @@ int dap_chain_net_vpn_client_tun_create(const char *a_ipv4_addr_str, const char
 
 int dap_chain_net_vpn_client_tun_delete(void)
 {
-    pthread_mutex_lock(&s_clients_mutex);
-    dap_events_socket_remove_and_delete_mt(s_tun_events_socket->worker, s_tun_events_socket);
-    s_tun_events_socket = NULL;
-    pthread_mutex_unlock(&s_clients_mutex);
+    if(s_tun_events_socket) {
+        pthread_mutex_lock(&s_clients_mutex);
+        dap_events_socket_remove_and_delete_mt(s_tun_events_socket->worker, s_tun_events_socket);
+        s_tun_events_socket = NULL;
+        pthread_mutex_unlock(&s_clients_mutex);
+    }
 
     // restore previous routing
     if(!s_conn_name || !s_last_used_connection_name)
-- 
GitLab