diff --git a/dap_chain_net_srv_vpn.c b/dap_chain_net_srv_vpn.c
index 5502bc98d574119d12338da99981e4227ecf52bb..90a0907091f00f550c8c915a0d33253de5efef40 100755
--- a/dap_chain_net_srv_vpn.c
+++ b/dap_chain_net_srv_vpn.c
@@ -479,6 +479,12 @@ void s_new(dap_stream_ch_t* a_stream_ch, void* a_arg)
 
     a_stream_ch->internal = DAP_NEW_Z(dap_chain_net_srv_ch_vpn_t);
     dap_chain_net_srv_ch_vpn_t * l_srv_vpn = CH_VPN(a_stream_ch);
+
+    if(a_stream_ch->stream->session->_inheritor == NULL && a_stream_ch->stream->session != NULL)
+        dap_chain_net_srv_stream_session_create(a_stream_ch->stream->session);
+    dap_chain_net_srv_uid_t l_uid = { .uint64 = DAP_CHAIN_NET_SRV_VPN_ID };
+    l_srv_vpn->net_srv = dap_chain_net_srv_get(l_uid);
+
     dap_chain_net_srv_stream_session_t * l_srv_session = (dap_chain_net_srv_stream_session_t *) a_stream_ch->stream->session->_inheritor;
     pthread_mutex_init(&l_srv_vpn->mutex, NULL);
     l_srv_vpn->raw_l3_sock = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
@@ -525,7 +531,9 @@ void srv_ch_vpn_delete(dap_stream_ch_t* ch, void* arg)
     }
 
     pthread_rwlock_wrlock(&s_clients_rwlock);
-    HASH_DEL(s_ch_vpn_addrs,l_ch_vpn);
+    if(s_ch_vpn_addrs) {
+        HASH_DEL(s_ch_vpn_addrs, l_ch_vpn);
+    }
 
     if ( l_is_unleased ){ // If unleased
         dap_chain_net_srv_vpn_item_ipv4_t * l_item_unleased = DAP_NEW_Z(dap_chain_net_srv_vpn_item_ipv4_t);
@@ -549,7 +557,9 @@ void srv_ch_vpn_delete(dap_stream_ch_t* ch, void* arg)
     HASH_ITER(hh, l_ch_vpn->socks , cur, tmp)
     {
         log_it(L_DEBUG, "delete socket: %i", cur->sock);
-        HASH_DEL(l_ch_vpn->socks, cur);
+        if(l_ch_vpn->socks){
+            HASH_DEL(l_ch_vpn->socks, cur);
+        }
         if(cur)
             free(cur);
     }