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 6874a43..4c913f5 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