From 72ba8f859d787a6898a73025763dc6322f70a1c8 Mon Sep 17 00:00:00 2001
From: Dmitriy Gerasimov <naeper@demlabs.net>
Date: Tue, 14 May 2019 16:05:23 +0700
Subject: [PATCH] [*] Small fixes

---
 dap_chain_node_cli_cmd.c | 113 +++++++++++++++++++--------------------
 1 file changed, 55 insertions(+), 58 deletions(-)

diff --git a/dap_chain_node_cli_cmd.c b/dap_chain_node_cli_cmd.c
index 6874a430a1..4c913f55c3 100644
--- a/dap_chain_node_cli_cmd.c
+++ b/dap_chain_node_cli_cmd.c
@@ -350,8 +350,11 @@ static int com_global_db_link(dap_chain_node_info_t *node_info, const char *cmd,
         dap_chain_node_cli_set_reply_text(str_reply, "alias not found");
         return -1;
     }
-    dap_chain_node_info_t *node_info_read = dap_chain_node_info_read_and_reply(address, str_reply);
-    if(!node_info_read)
+
+
+    dap_chain_node_info_t * l_node_info_read = dap_chain_node_info_read_and_reply(address, str_reply);
+    size_t l_node_info_read_size = dap_chain_node_info_get_size( l_node_info_read);
+    if(! l_node_info_read)
         return -1;
 
     int cmd_int = 0;
@@ -362,10 +365,10 @@ static int com_global_db_link(dap_chain_node_info_t *node_info, const char *cmd,
 
     // find link in node_info_read
     int index_link = -1;
-    for(size_t i = 0; i < node_info_read->hdr.links_number; i++) {
-        if(node_info_read->links[i].uint64 == link->uint64) {
+    for(size_t i = 0; i <  l_node_info_read->hdr.links_number; i++) {
+        if( l_node_info_read->links[i].uint64 == link->uint64) {
             // link already present
-            index_link = i;
+            index_link = (int) i;
             break;
         }
     }
@@ -373,8 +376,9 @@ static int com_global_db_link(dap_chain_node_info_t *node_info, const char *cmd,
     // add link
     if(cmd_int == 1) {
         if(index_link == -1) {
-            memcpy(&(node_info_read->links[node_info_read->hdr.links_number]), link, sizeof(dap_chain_node_addr_t));
-            node_info_read->hdr.links_number++;
+            l_node_info_read = DAP_REALLOC ( l_node_info_read,l_node_info_read_size += sizeof (*link) );
+            memcpy(&( l_node_info_read->links[ l_node_info_read->hdr.links_number]), link, sizeof(dap_chain_node_addr_t));
+             l_node_info_read->hdr.links_number++;
             res_successful = true;
         }
     }
@@ -382,16 +386,17 @@ static int com_global_db_link(dap_chain_node_info_t *node_info, const char *cmd,
     else if(cmd_int == 2) {
         // move link list to one item prev
         if(index_link >= 0) {
-            for(unsigned int j = (unsigned int) index_link; j < (node_info_read->hdr.links_number - 1); j++) {
-                memcpy(&(node_info_read->links[j]), &(node_info_read->links[j + 1]), sizeof(dap_chain_node_addr_t));
+            for(unsigned int j = (unsigned int) index_link; j < ( l_node_info_read->hdr.links_number - 1); j++) {
+                memcpy(&( l_node_info_read->links[j]), &( l_node_info_read->links[j + 1]), sizeof(dap_chain_node_addr_t));
             }
-            node_info_read->hdr.links_number--;
+            l_node_info_read->hdr.links_number--;
             res_successful = true;
+            l_node_info_read = DAP_REALLOC ( l_node_info_read,l_node_info_read_size -= sizeof (*link) );
         }
     }
     // save edited node_info
     if(res_successful) {
-        bool res = dap_chain_node_info_save_and_reply(node_info_read, str_reply);
+        bool res = dap_chain_node_info_save_and_reply( l_node_info_read, str_reply);
         if(res) {
             res_successful = true;
             if(cmd_int == 1)
@@ -419,7 +424,7 @@ static int com_global_db_link(dap_chain_node_info_t *node_info, const char *cmd,
     }
 
     DAP_DELETE(address);
-    DAP_DELETE(node_info_read);
+    DAP_DELETE( l_node_info_read);
     if(res_successful)
         return 0;
     return -1;
@@ -616,13 +621,6 @@ static int com_global_db_cur_node_set_from_remote(dap_chain_node_info_t *a_node_
         return -1;
     }
 
-    // get cur node addr
-    uint64_t l_cur_node_addr = dap_db_get_cur_node_addr(); //0x12345
-    if(!l_cur_node_addr) {
-        dap_chain_node_cli_set_reply_text(a_str_reply, "current node has no address");
-        DAP_DELETE(a_node_info);
-        return -1;
-    }
     dap_chain_node_info_t *l_node_info = dap_chain_node_info_read_and_reply(l_address, a_str_reply);
     if(!l_node_info) {
         DAP_DELETE(a_node_info);
@@ -675,15 +673,13 @@ static int com_global_db_cur_node_set_from_remote(dap_chain_node_info_t *a_node_
             DAP_DELETE(client->recv_data);
         client->recv_data = NULL;
         dap_chain_node_cli_set_reply_text(a_str_reply, "new address for remote node has been set 0x%x", addr);
+
     }
         return 0;
     default:
         dap_chain_node_cli_set_reply_text(a_str_reply, "error");
         return -1;
     }
-
-    dap_chain_node_cli_set_reply_text(a_str_reply, "not implement");
-    return -1;
 }
 
 /**
@@ -691,7 +687,7 @@ static int com_global_db_cur_node_set_from_remote(dap_chain_node_info_t *a_node_
  *
  * return 0 OK, -1 Err
  */
-int com_global_db(int argc, const char ** argv, char **str_reply)
+int com_global_db(int a_argc, const char ** a_argv, char **a_str_reply)
 {
     enum {
         CMD_NONE, CMD_ADD, CMD_DEL, CMD_LINK, CMD_DUMP, CMD_CUR_NODE_GET, CMD_CUR_NODE_SET, CMD_CUR_NODE_SET_FROM_REMOTE
@@ -699,42 +695,42 @@ int com_global_db(int argc, const char ** argv, char **str_reply)
     //printf("com_global_db\n");
     int arg_index = 1;
     // find 'node' as first parameter only
-    arg_index = dap_chain_node_cli_find_option_val(argv, arg_index, min(argc, arg_index + 1), "node", NULL);
-    if(!arg_index || argc < 3) {
-        dap_chain_node_cli_set_reply_text(str_reply, "parameters are not valid");
+    arg_index = dap_chain_node_cli_find_option_val(a_argv, arg_index, min(a_argc, arg_index + 1), "node", NULL);
+    if(!arg_index || a_argc < 3) {
+        dap_chain_node_cli_set_reply_text(a_str_reply, "parameters are not valid");
         return -1;
     }
     int arg_index_n = ++arg_index;
     // find command (add, delete, etc) as second parameter only
     int cmd_num = CMD_NONE;
-    if((arg_index_n = dap_chain_node_cli_find_option_val(argv, arg_index, min(argc, arg_index + 1), "add", NULL))
+    if((arg_index_n = dap_chain_node_cli_find_option_val(a_argv, arg_index, min(a_argc, arg_index + 1), "add", NULL))
             != 0) {
         cmd_num = CMD_ADD;
     }
-    else if((arg_index_n = dap_chain_node_cli_find_option_val(argv, arg_index, min(argc, arg_index + 1), "del", NULL))
+    else if((arg_index_n = dap_chain_node_cli_find_option_val(a_argv, arg_index, min(a_argc, arg_index + 1), "del", NULL))
             != 0) {
         cmd_num = CMD_DEL;
     }
-    else if((arg_index_n = dap_chain_node_cli_find_option_val(argv, arg_index, min(argc, arg_index + 1), "link", NULL))
+    else if((arg_index_n = dap_chain_node_cli_find_option_val(a_argv, arg_index, min(a_argc, arg_index + 1), "link", NULL))
             != 0) {
         cmd_num = CMD_LINK;
     }
-    else if((arg_index_n = dap_chain_node_cli_find_option_val(argv, arg_index, min(argc, arg_index + 1), "dump", NULL))
+    else if((arg_index_n = dap_chain_node_cli_find_option_val(a_argv, arg_index, min(a_argc, arg_index + 1), "dump", NULL))
             != 0) {
         cmd_num = CMD_DUMP;
     }
-    else if((arg_index_n = dap_chain_node_cli_find_option_val(argv, arg_index, min(argc, arg_index + 1), "cur_node_get", NULL)) != 0) {
+    else if((arg_index_n = dap_chain_node_cli_find_option_val(a_argv, arg_index, min(a_argc, arg_index + 1), "cur_node_get", NULL)) != 0) {
         cmd_num = CMD_CUR_NODE_GET;
     }
-    else if((arg_index_n = dap_chain_node_cli_find_option_val(argv, arg_index, min(argc, arg_index + 1), "cur_node_set", NULL)) != 0) {
+    else if((arg_index_n = dap_chain_node_cli_find_option_val(a_argv, arg_index, min(a_argc, arg_index + 1), "cur_node_set", NULL)) != 0) {
         cmd_num = CMD_CUR_NODE_SET;
     }
-    else if((arg_index_n = dap_chain_node_cli_find_option_val(argv, arg_index, min(argc, arg_index + 1), "remote_set",
+    else if((arg_index_n = dap_chain_node_cli_find_option_val(a_argv, arg_index, min(a_argc, arg_index + 1), "cur_node_set_from_remote",
     NULL)) != 0) {
         cmd_num = CMD_CUR_NODE_SET_FROM_REMOTE;
     }
     if(cmd_num == CMD_NONE) {
-        dap_chain_node_cli_set_reply_text(str_reply, "command %s not recognized", argv[1]);
+        dap_chain_node_cli_set_reply_text(a_str_reply, "command %s not recognized", a_argv[1]);
         return -1;
     }
     //arg_index = arg_index_n; // no need, they are already equal must be
@@ -743,12 +739,12 @@ int com_global_db(int argc, const char ** argv, char **str_reply)
     const char *l_addr_str = NULL, *alias_str = NULL, *l_cell_str = NULL, *l_link_str = NULL;
     const char *ipv4_str = NULL, *ipv6_str = NULL;
     // find addr, alias
-    dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-addr", &l_addr_str);
-    dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-alias", &alias_str);
-    dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-cell", &l_cell_str);
-    dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-ipv4", &ipv4_str);
-    dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-ipv6", &ipv6_str);
-    dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-link", &l_link_str);
+    dap_chain_node_cli_find_option_val(a_argv, arg_index, a_argc, "-addr", &l_addr_str);
+    dap_chain_node_cli_find_option_val(a_argv, arg_index, a_argc, "-alias", &alias_str);
+    dap_chain_node_cli_find_option_val(a_argv, arg_index, a_argc, "-cell", &l_cell_str);
+    dap_chain_node_cli_find_option_val(a_argv, arg_index, a_argc, "-ipv4", &ipv4_str);
+    dap_chain_node_cli_find_option_val(a_argv, arg_index, a_argc, "-ipv6", &ipv6_str);
+    dap_chain_node_cli_find_option_val(a_argv, arg_index, a_argc, "-link", &l_link_str);
 
     // struct to write to the global db
     dap_chain_node_addr_t l_link={0};
@@ -770,45 +766,45 @@ int com_global_db(int argc, const char ** argv, char **str_reply)
     {
     // add new node to global_db
     case CMD_ADD:
-        if(!arg_index || argc < 8) {
-            dap_chain_node_cli_set_reply_text(str_reply, "invalid parameters");
+        if(!arg_index || a_argc < 8) {
+            dap_chain_node_cli_set_reply_text(a_str_reply, "invalid parameters");
             return -1;
         }
         // handler of command 'global_db node add'
-        return com_global_db_add(l_node_info, alias_str, l_cell_str, ipv4_str, ipv6_str, str_reply);
+        return com_global_db_add(l_node_info, alias_str, l_cell_str, ipv4_str, ipv6_str, a_str_reply);
         //break;
 
     case CMD_DEL:
         // handler of command 'global_db node del'
-        return com_global_db_del(l_node_info, alias_str, str_reply);
+        return com_global_db_del(l_node_info, alias_str, a_str_reply);
     case CMD_LINK:
-        if(dap_chain_node_cli_find_option_val(argv, arg_index, min(argc, arg_index + 1), "add", NULL))
+        if(dap_chain_node_cli_find_option_val(a_argv, arg_index, min(a_argc, arg_index + 1), "add", NULL))
             // handler of command 'global_db node link add -addr <node address> -link <node address>'
-            return com_global_db_link(l_node_info, "add", alias_str, &l_link, str_reply);
-        else if(dap_chain_node_cli_find_option_val(argv, arg_index, min(argc, arg_index + 1), "del", NULL))
+            return com_global_db_link(l_node_info, "add", alias_str, &l_link, a_str_reply);
+        else if(dap_chain_node_cli_find_option_val(a_argv, arg_index, min(a_argc, arg_index + 1), "del", NULL))
             // handler of command 'global_db node link del -addr <node address> -link <node address>'
-            return com_global_db_link(l_node_info, "del", alias_str, &l_link, str_reply);
+            return com_global_db_link(l_node_info, "del", alias_str, &l_link, a_str_reply);
         else {
-            dap_chain_node_cli_set_reply_text(str_reply, "command not recognize, supported format:\n"
+            dap_chain_node_cli_set_reply_text(a_str_reply, "command not recognize, supported format:\n"
                     "global_db node link <add|del] [-addr <node address>  | -alias <node alias>] -link <node address>");
             DAP_DELETE(l_node_info);
             return -1;
         }
     case CMD_DUMP:
         // handler of command 'global_db node dump'
-        return com_global_db_dump(l_node_info, alias_str, str_reply);
+        return com_global_db_dump(l_node_info, alias_str, a_str_reply);
     case CMD_CUR_NODE_GET:
         // handler of command 'global_db cur_node get'
-        return com_global_db_cur_node_get(str_reply);
+        return com_global_db_cur_node_get(a_str_reply);
     case CMD_CUR_NODE_SET:
         // handler of command 'global_db cur_node set'
-        return com_global_db_cur_node_set(l_node_info, alias_str, str_reply);
+        return com_global_db_cur_node_set(l_node_info, alias_str, a_str_reply);
     case CMD_CUR_NODE_SET_FROM_REMOTE:
         // handler of command 'global_db node remote_set'
-        return com_global_db_cur_node_set_from_remote(l_node_info, alias_str, str_reply);
+        return com_global_db_cur_node_set_from_remote(l_node_info, alias_str, a_str_reply);
 
     default:
-        dap_chain_node_cli_set_reply_text(str_reply, "command %s not recognized", argv[1]);
+        dap_chain_node_cli_set_reply_text(a_str_reply, "command %s not recognized", a_argv[1]);
         return -1;
     }
     return -1;
@@ -907,9 +903,10 @@ int com_node(int argc, const char ** argv, char **str_reply)
             }
 
             // get cur node addr
-            uint64_t l_cur_node_addr = dap_chain_net_get_cur_addr(l_net)->uint64 ;  //0x12345
-            if(!l_cur_node_addr) {
-                dap_chain_node_cli_set_reply_text(str_reply, "node has no address");
+            dap_chain_node_addr_t l_cur_node_addr;
+            l_cur_node_addr.uint64 = dap_db_get_cur_node_addr();  //0x12345
+            if(!l_cur_node_addr.uint64) {
+                dap_chain_node_cli_set_reply_text(str_reply, "Current node has no address");
                 return -1;
             }
 
@@ -940,7 +937,7 @@ int com_node(int argc, const char ** argv, char **str_reply)
             // Get last timestamp in log
             time_t l_timestamp_start = dap_db_log_get_last_timestamp();
             size_t l_data_send_len = 0;
-            uint8_t *l_data_send = dap_stream_ch_chain_net_make_packet(l_cur_node_addr, node_info->hdr.address.uint64,
+            uint8_t *l_data_send = dap_stream_ch_chain_net_make_packet(l_cur_node_addr.uint64, node_info->hdr.address.uint64,
                     l_timestamp_start, NULL, 0, &l_data_send_len);
 
             uint8_t l_ch_id = dap_stream_ch_chain_net_get_id(); // Channel id for global_db sync
-- 
GitLab