diff --git a/dap_chain_net_srv_vpn.c b/dap_chain_net_srv_vpn.c
index 564c174debd1df39050808fa6c1c1958b8b60318..7b87739c9f9203db35b41427ceb97d65bca4db21 100755
--- a/dap_chain_net_srv_vpn.c
+++ b/dap_chain_net_srv_vpn.c
@@ -499,13 +499,13 @@ void srv_ch_vpn_delete(dap_stream_ch_t* ch, void* arg)
     // So complicated to update usage client to be sure that nothing breaks it
     usage_client_t * l_usage_client = NULL;
 
-    bool l_is_unleased = true;
+    bool l_is_unleased = false;
     if ( l_ch_vpn->addr_ipv4.s_addr ){ // if leased address
         pthread_rwlock_wrlock(& s_raw_server_rwlock);
         if ( s_raw_server->ipv4_lease_last.s_addr == l_ch_vpn->addr_ipv4.s_addr ){
             s_raw_server->ipv4_lease_last.s_addr = ntohl( ntohl(s_raw_server->ipv4_lease_last.s_addr)-1 );
-            l_is_unleased = false;
         }
+        l_is_unleased = true;
         pthread_rwlock_unlock(& s_raw_server_rwlock);
     }
 
diff --git a/dap_chain_net_srv_vpn_cdb.c b/dap_chain_net_srv_vpn_cdb.c
index fbb51b4a804e162668809a262c2527ceed1fd963..27223d97070568cb70e09902c5ecc7e1fa6a75ca 100644
--- a/dap_chain_net_srv_vpn_cdb.c
+++ b/dap_chain_net_srv_vpn_cdb.c
@@ -103,7 +103,7 @@ int dap_chain_net_srv_vpn_cdb_init(dap_http_t * a_http)
         "[--acive_days <Setup active day thats left for user >]\n"
             "\tCreate user with login, password and some more optional fields\n\n"
         "vpn_cdb user update --login <Login> [--password <Password>] [--first_name <First Name] [--last_name <Last Name>] [--email <Email>]"
-                             "[--acive_days <Setup active day thats left for user >]\n"
+                             "[--active_days <Setup active day thats left for user >]\n"
             "\tUpdate existent user\n"
         "vpn_cdb user delete --login <Login>\n"
             "\tDelete user by login\n"
@@ -252,7 +252,8 @@ void dap_chain_net_srv_vpn_cdb_auth_after(enc_http_delegate_t* a_delegate, const
 {
 #ifndef __ANDROID__
     dap_enc_key_t *l_client_key;
-    log_it( L_DEBUG, "Authorized, now need to create conditioned transaction if not present");
+    log_it( L_DEBUG, "Authorized, now need to create conditioned transaction if not present key_len=%d", dap_strlen( a_pkey_b64));
+    //log_it( L_DEBUG, "Authorized, now need to create conditioned transaction if not present key_len=%d a_pkey_b64='%s'", dap_strlen( a_pkey_b64), a_pkey_b64);
     {
         size_t l_pkey_b64_length = dap_strlen( a_pkey_b64);
         byte_t *l_pkey_raw = DAP_NEW_Z_SIZE(byte_t,l_pkey_b64_length);
@@ -260,9 +261,12 @@ void dap_chain_net_srv_vpn_cdb_auth_after(enc_http_delegate_t* a_delegate, const
         size_t l_pkey_raw_size =
                 dap_enc_base64_decode(a_pkey_b64, l_pkey_b64_length, l_pkey_raw, DAP_ENC_DATA_TYPE_B64_URLSAFE);
         char *l_pkey_gdb_group=  dap_strdup_printf( "%s.pkey", DAP_CHAIN_NET_SRV_VPN_CDB_GDB_PREFIX);
-        log_it(L_DEBUG, "Pkey group %s", l_pkey_gdb_group);
+        log_it(L_DEBUG, "Pkey group '%s'", l_pkey_gdb_group);
         dap_chain_global_db_gr_set( dap_strdup(a_login), l_pkey_raw, l_pkey_raw_size, l_pkey_gdb_group);
-        l_client_key = dap_enc_key_deserealize(l_pkey_raw, l_pkey_raw_size);
+
+        l_client_key = dap_enc_key_new(DAP_ENC_KEY_TYPE_SIG_TESLA);
+        int l_res = dap_enc_key_deserealize_priv_key(l_client_key, l_pkey_raw, l_pkey_raw_size);
+        log_it(L_DEBUG, "dap_enc_key_deserealize_priv_key='%d'", l_res);
         DAP_DELETE(l_pkey_gdb_group);
     }
 
diff --git a/dap_chain_net_srv_vpn_cdb_auth.c b/dap_chain_net_srv_vpn_cdb_auth.c
index b155e0aaa69e6e214cc5c86830b83bb4379f6f86..b70f6127098f3b0a9e6d18209c7f5c8a802a6d15 100644
--- a/dap_chain_net_srv_vpn_cdb_auth.c
+++ b/dap_chain_net_srv_vpn_cdb_auth.c
@@ -183,8 +183,7 @@ static int s_input_validation(const char * str)
         static const char *nospecial="0123456789"
                 "abcdefghijklmnopqrstuvwxyz"
                 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                ".=@?_!#$%";
-
+                ".=@?_!#$%-";
         while(*str) // Loop until (*url) == 0.  (*url) is about equivalent to url[0].
         {
                 // Can we find the character at *url in the string 'nospecial'?
@@ -478,12 +477,14 @@ static void s_http_enc_proc(enc_http_delegate_t *a_delegate, void * a_arg)
             }else if(strcmp(a_delegate->in_query,"login")==0 ){
                 char l_login[128]={0};
                 char l_password[256]={0};
-                char l_pkey[4096]={0};
+                char l_pkey[6001]={0};//char l_pkey[4096]={0};
 
                 char l_domain[64], l_domain2[64];
 
-                if( sscanf(a_delegate->request_str,"%127s %255s %4095s ",l_login,l_password,l_pkey) >=3 ||
-                    sscanf(a_delegate->request_str,"%127s %255s %63s %4095s %63s",l_login,l_password,l_domain, l_pkey, l_domain2) >=4 ){
+                //log_it(L_DEBUG, "request_size=%d request_str='%s'\n",a_delegate->request_size, a_delegate->request_str);
+
+                if( sscanf(a_delegate->request_str,"%127s %255s %63s %6000s %63s",l_login,l_password,l_domain, l_pkey, l_domain2) >=4 ||
+                    sscanf(a_delegate->request_str,"%127s %255s %6000s ",l_login,l_password,l_pkey) >=3){
                     log_it(L_INFO, "Trying to login with username '%s'",l_login);
 
                     if(s_input_validation(l_login)==0){
@@ -534,7 +535,7 @@ static void s_http_enc_proc(enc_http_delegate_t *a_delegate, void * a_arg)
                             enc_http_reply_f(a_delegate,"</auth_info>");
                             log_it(L_INFO, "Login: Successfuly logined user %s",l_login);
                             *l_return_code = Http_Status_OK;
-
+                            //log_it(L_DEBUG, "response_size='%d'",a_delegate->response_size);
                             DAP_DELETE(l_first_name);
                             DAP_DELETE(l_last_name);
                             DAP_DELETE(l_email);