diff --git a/dap_chain_net.c b/dap_chain_net.c index 135c6bd9d3dfd305717572526d88924252a5f452..3b28dceff0b5b39afb03d967069ca52721ebf7a8 100644 --- a/dap_chain_net.c +++ b/dap_chain_net.c @@ -331,6 +331,8 @@ lb_proc_state: } else { log_it(L_WARNING,"No links for connecting, return back to OFFLINE state"); PVT(l_net)->state = NET_STATE_OFFLINE; + // remove looping + PVT(l_net)->state_target = NET_STATE_OFFLINE; } }else { log_it(L_WARNING,"Target state is NET_STATE_LINKS_PREPARE? Realy?"); diff --git a/dap_chain_node_cli_cmd.c b/dap_chain_node_cli_cmd.c index 2b8205f0eecf42627350a97d42ba44e760042110..75802c9796eaab53009f9c9d46d324e24fb05f65 100644 --- a/dap_chain_node_cli_cmd.c +++ b/dap_chain_node_cli_cmd.c @@ -122,30 +122,20 @@ static dap_list_t* get_aliases_by_name(dap_chain_net_t * l_net, dap_chain_node_a dap_list_t *list_aliases = NULL; size_t data_size = 0; // read all aliases - dap_global_db_obj_t **objs = dap_chain_global_db_gr_load(l_net->pub.gdb_nodes_aliases, &data_size); + dap_global_db_obj_t *objs = dap_chain_global_db_gr_load(l_net->pub.gdb_nodes_aliases, &data_size); if(!objs || !data_size) return NULL; for(size_t i = 0; i < data_size; i++) { //dap_chain_node_addr_t addr_i; - dap_global_db_obj_t *obj = objs[i]; + dap_global_db_obj_t *obj = objs + i; if(!obj) break; dap_chain_node_addr_t *l_addr = (dap_chain_node_addr_t*) (void*) obj->value; if(l_addr && obj->value_len == sizeof(dap_chain_node_addr_t) && a_addr->uint64 == l_addr->uint64) { list_aliases = dap_list_prepend(list_aliases, strdup(obj->key)); } - /* char *addr_str = obj->value; - if(addr_str && strlen(addr_str) == sizeof(dap_chain_node_addr_t) * 2) { - //addr_i = DAP_NEW_Z(dap_chain_node_addr_t); - if(hex2bin((char*) &addr_i, (const unsigned char *) addr_str, sizeof(dap_chain_node_addr_t) * 2) == -1) { - continue; - } - if(a_addr->uint64 == addr_i.uint64) { - list_aliases = dap_list_prepend(list_aliases, strdup(obj->key)); - } - }*/ - } - dap_chain_global_db_objs_delete(objs); + } + dap_chain_global_db_objs_delete(objs, data_size); return list_aliases; } @@ -1590,20 +1580,20 @@ int com_mempool_list(int argc, char ** argv, char ** a_str_reply) size_t l_objs_size = 0; - dap_global_db_obj_t ** l_objs = dap_chain_global_db_gr_load(l_gdb_group_mempool, &l_objs_size); + dap_global_db_obj_t * l_objs = dap_chain_global_db_gr_load(l_gdb_group_mempool, &l_objs_size); dap_string_append_printf(l_str_tmp, "%s.%s: Found %u records :\n", l_net->pub.name, l_chain->name, l_objs_size); for(size_t i = 0; i < l_objs_size; i++) { - dap_chain_datum_t * l_datum = (dap_chain_datum_t*) l_objs[i]->value; + dap_chain_datum_t * l_datum = (dap_chain_datum_t*) l_objs[i].value; char buf[50]; time_t l_ts_create = (time_t) l_datum->header.ts_create; dap_string_append_printf(l_str_tmp, "%s: type_id=%s data_size=%u ts_create=%s", - l_objs[i]->key, c_datum_type_str[l_datum->header.type_id], + l_objs[i].key, c_datum_type_str[l_datum->header.type_id], l_datum->header.data_size, ctime_r(&l_ts_create, buf)); } // Clean up dap_chain_node_cli_set_reply_text(a_str_reply, l_str_tmp->str); - dap_chain_global_db_objs_delete(l_objs); + dap_chain_global_db_objs_delete(l_objs, l_objs_size); dap_string_free(l_str_tmp, false); return 0; @@ -1671,33 +1661,44 @@ int com_mempool_proc(int argc, char ** argv, char ** a_str_reply) if(dap_chain_node_cli_cmd_values_parse_net_chain(&arg_index, argc, argv, a_str_reply, &l_chain, &l_net) < 0) return -1; - char * l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool(l_chain); size_t l_objs_size = 0; - dap_global_db_obj_t ** l_objs = dap_chain_global_db_gr_load(l_gdb_group_mempool, &l_objs_size); + dap_global_db_obj_t * l_objs = dap_chain_global_db_gr_load(l_gdb_group_mempool, &l_objs_size); dap_string_t * l_str_tmp = dap_string_new(NULL); if(l_objs_size) { dap_string_append_printf(l_str_tmp, "%s.%s: Found %u records :\n", l_net->pub.name, l_chain->name); size_t l_datums_size = l_objs_size; dap_chain_datum_t ** l_datums = DAP_NEW_Z_SIZE(dap_chain_datum_t*, sizeof(dap_chain_datum_t*) * l_datums_size); + size_t l_objs_size_tmp = (l_objs_size > 15) ? min(l_objs_size, 10) : l_objs_size; for(size_t i = 0; i < l_objs_size; i++) { - dap_chain_datum_t * l_datum = (dap_chain_datum_t*) l_objs[i]->value; + dap_chain_datum_t * l_datum = (dap_chain_datum_t*) l_objs[i].value; l_datums[i] = l_datum; - char buf[50]; - time_t l_ts_create = (time_t) l_datum->header.ts_create; - dap_string_append_printf(l_str_tmp, "0x%s: type_id=%s ts_create=%s data_size=%u\n", - l_objs[i]->key, c_datum_type_str[l_datum->header.type_id], - ctime_r(&l_ts_create, buf), l_datum->header.data_size); + if(i < l_objs_size_tmp) { + char buf[50]; + time_t l_ts_create = (time_t) l_datum->header.ts_create; + dap_string_append_printf(l_str_tmp, "0x%s: type_id=%s ts_create=%s data_size=%u\n", + l_objs[i].key, c_datum_type_str[l_datum->header.type_id], + ctime_r(&l_ts_create, buf), l_datum->header.data_size); + } + } + if(l_objs_size > 15) { + dap_string_append_printf(l_str_tmp, "...\n"); } size_t l_objs_processed = l_chain->callback_datums_pool_proc(l_chain, l_datums, l_datums_size); // Delete processed objects + size_t l_objs_processed_tmp = (l_objs_processed > 15) ? min(l_objs_processed, 10) : l_objs_processed; for(size_t i = 0; i < l_objs_processed; i++) { - dap_chain_global_db_gr_del(l_objs[i]->key, l_gdb_group_mempool); - dap_string_append_printf(l_str_tmp, "New event created, removed datum 0x%s from mempool \n", - l_objs[i]->key); + dap_chain_global_db_gr_del(l_objs[i].key, l_gdb_group_mempool); + if(i < l_objs_processed_tmp) { + dap_string_append_printf(l_str_tmp, "New event created, removed datum 0x%s from mempool \n", + l_objs[i].key); + } + } + if(l_objs_processed > 15) { + dap_string_append_printf(l_str_tmp, "...\n"); } - dap_chain_global_db_objs_delete(l_objs); + dap_chain_global_db_objs_delete(l_objs, l_objs_size); dap_chain_node_cli_set_reply_text(a_str_reply, l_str_tmp->str); dap_string_free(l_str_tmp, false);