From 63a1aec17bbf6bee9b55b683765fd063bf6bfe77 Mon Sep 17 00:00:00 2001 From: "alexey.stratulat" <alexey.stratulat@demlabs.net> Date: Mon, 1 Jul 2024 08:57:55 +0000 Subject: [PATCH] Bugfix 11771 (3) --- modules/chain/dap_chain.c | 3 +- .../consensus/dag-poa/dap_chain_cs_dag_poa.c | 4 +- .../consensus/esbocs/dap_chain_cs_esbocs.c | 12 +-- modules/net/dap_chain_node_cli.c | 6 +- modules/net/dap_chain_node_cli_cmd.c | 92 +++++++++++-------- modules/type/blocks/dap_chain_cs_blocks.c | 28 +++--- modules/type/dag/dap_chain_cs_dag.c | 76 +++++++-------- 7 files changed, 117 insertions(+), 104 deletions(-) diff --git a/modules/chain/dap_chain.c b/modules/chain/dap_chain.c index 08bf39a789..b1afa3c44a 100644 --- a/modules/chain/dap_chain.c +++ b/modules/chain/dap_chain.c @@ -179,6 +179,7 @@ void dap_chain_delete(dap_chain_t * a_chain) if (a_chain->callback_delete) a_chain->callback_delete(a_chain); DAP_DEL_Z(a_chain->_inheritor); + dap_config_close(a_chain->config); pthread_rwlock_destroy(&a_chain->rwlock); pthread_rwlock_destroy(&a_chain->cell_rwlock); } @@ -525,7 +526,7 @@ dap_chain_t *dap_chain_load_from_cfg(const char *a_chain_net_name, dap_chain_net } else l_chain->autoproc_datum_types_count = 0; } - if (l_chain && l_chain->config) + if (l_chain) l_chain->config = l_cfg; return l_chain; } else diff --git a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c index 616a792af3..305173a049 100644 --- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c +++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c @@ -113,7 +113,7 @@ int dap_chain_cs_dag_poa_init() dap_chain_cs_add("dag_poa", s_callback_new); s_seed_mode = dap_config_get_item_bool_default(g_config,"general","seed_mode",false); dap_cli_server_cmd_add ("dag_poa", s_cli_dag_poa, "DAG PoA commands", - "dag_poa event sign -net <net_name> -chain <chain_name> -event <event_hash> [-H {hex | base58(default)}]\n" + "dag_poa event sign -net <net_name> [-chain <chain_name>] -event <event_hash> [-H {hex | base58(default)}]\n" "\tSign event <event hash> in the new round pool with its authorize certificate\n\n"); return 0; @@ -191,7 +191,7 @@ static int s_cli_dag_poa(int argc, char ** argv, void **a_str_reply) } if (dap_chain_node_cli_cmd_values_parse_net_chain(&arg_index,argc,argv,a_str_reply,&l_chain,&l_chain_net, - CHAIN_TYPE_INVALID)) { + CHAIN_TYPE_TOKEN)) { return -3; } diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index 7cf43b8c92..d61688c07f 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -184,17 +184,17 @@ int dap_chain_cs_esbocs_init() s_stream_ch_packet_in, NULL); dap_cli_server_cmd_add ("esbocs", s_cli_esbocs, "ESBOCS commands", - "esbocs min_validators_count set -net <net_name> -chain <chain_name> -cert <poa_cert_name> -val_count <value>\n" + "esbocs min_validators_count set -net <net_name> [-chain <chain_name>] -cert <poa_cert_name> -val_count <value>\n" "\tSets minimum validators count for ESBOCS consensus\n" - "esbocs min_validators_count show -net <net_name> -chain <chain_name>\n" + "esbocs min_validators_count show -net <net_name> [-chain <chain_name>]\n" "\tShow minimum validators count for ESBOCS consensus\n" - "esbocs check_signs_structure {enable|disable} -net <net_name> -chain <chain_name> -cert <poa_cert_name>\n" + "esbocs check_signs_structure {enable|disable} -net <net_name> [-chain <chain_name>] -cert <poa_cert_name>\n" "\tEnables or disables checks for blocks signs structure validity\n" - "esbocs check_signs_structure show -net <net_name> -chain <chain_name>\n" + "esbocs check_signs_structure show -net <net_name> [-chain <chain_name>]\n" "\tShow status of checks for blocks signs structure validity\n" - "esbocs emergency_validators {add|remove} -net <net_name> -chain <chain_name> -cert <poa_cert_name> -pkey_hash <validator_pkey_hash>\n" + "esbocs emergency_validators {add|remove} -net <net_name> [-chain <chain_name>] -cert <poa_cert_name> -pkey_hash <validator_pkey_hash>\n" "\tAdd or remove validator by its signature public key hash to list of validators allowed to work in emergency mode\n" - "esbocs emergency_validators show -net <net_name> -chain <chain_name>\n" + "esbocs emergency_validators show -net <net_name> [-chain <chain_name>]\n" "\tShow list of validators public key hashes allowed to work in emergency mode\n"); return 0; } diff --git a/modules/net/dap_chain_node_cli.c b/modules/net/dap_chain_node_cli.c index 90258d3794..a0a93f2416 100644 --- a/modules/net/dap_chain_node_cli.c +++ b/modules/net/dap_chain_node_cli.c @@ -257,14 +257,14 @@ int dap_chain_node_cli_init(dap_config_t * g_config) "\tList mempool (entries or transaction) for (selected chain network or wallet)\n" "mempool check -net <net_name> [-chain <chain_name>] -datum <datum_hash>\n" "\tCheck mempool entrie for presence in selected chain network\n" - "mempool proc -net <net_name> -chain <chain_name> -datum <datum_hash>\n" + "mempool proc -net <net_name> [-chain <chain_name>] -datum <datum_hash>\n" "\tProc mempool entrie with specified hash for selected chain network\n" "\tCAUTION!!! This command will process transaction with any comission! Parameter minimum_comission will not be taken into account!\n" "mempool proc_all -net <net_name> -chain <chain_name>\n" "\tProc mempool all entries for selected chain network\n" - "mempool delete -net <net_name> -chain <chain_name> -datum <datum_hash>\n" + "mempool delete -net <net_name> [-chain <chain_name>] -datum <datum_hash>\n" "\tDelete datum with hash <datum hash> for selected chain network\n" - "mempool dump -net <net_name> -chain <chain_name> -datum <datum_hash>\n" + "mempool dump -net <net_name> [-chain <chain_name>] -datum <datum_hash>\n" "\tOutput information about datum in mempool\n" "mempool add_ca -net <net_name> [-chain <chain_name>] -ca_name <pub_cert_name>\n" "\tAdd pubic certificate into the mempool to prepare its way to chains\n" diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index 6d3267ed48..12f99b9e75 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -109,6 +109,18 @@ int _cmd_mempool_add_ca(dap_chain_net_t *a_net, dap_chain_t *a_chain, dap_cert_t *a_cert, void **a_str_reply); +dap_chain_t *s_get_chain_with_datum(dap_chain_net_t *a_net, const char *a_datum_hash) { + dap_chain_t *l_chain = NULL; + DL_FOREACH(a_net->pub.chains, l_chain) { + char *l_gdb_mempool = dap_chain_net_get_gdb_group_mempool_new(l_chain); + bool is_hash = dap_global_db_driver_is(l_gdb_mempool, a_datum_hash); + DAP_DELETE(l_gdb_mempool); + if (is_hash) + return l_chain; + } + return NULL; +} + /** * @brief node_info_read_and_reply * Read node from base @@ -3140,16 +3152,6 @@ static int mempool_delete_for_chain(dap_chain_t *a_chain, const char * a_datum_h return 1; } if (dap_global_db_del_sync(l_gdb_group_mempool, a_datum_hash_str) == 0) { - char *l_msg_str = dap_strdup_printf("Datum %s deleted", a_datum_hash_str); - json_object *l_msg = json_object_new_string(l_msg_str); - DAP_DELETE(l_msg_str); - if (!l_msg) { - dap_json_rpc_allocation_error; - DAP_DELETE(l_gdb_group_mempool); - DAP_DELETE(l_data_tmp); - return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; - } - json_object_array_add(*a_json_reply, l_msg); DAP_DELETE(l_gdb_group_mempool); DAP_DELETE(l_data_tmp); return 0; @@ -3180,30 +3182,40 @@ int _cmd_mempool_delete(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char return COM_MEMPOOL_DELETE_ERR_DATUM_NOT_FOUND_IN_ARGUMENT; } int res = 0; + json_object *l_jobj_ret = json_object_new_object(); + json_object *l_jobj_net = json_object_new_string(a_net->pub.name); + json_object *l_jobj_chain = NULL; + json_object *l_jobj_datum_hash = json_object_new_string(a_datum_hash); if (!a_chain) { - dap_chain_t * l_chain; - DL_FOREACH(a_net->pub.chains, l_chain){ + dap_chain_t * l_chain = s_get_chain_with_datum(a_net, a_datum_hash); + if (l_chain) { res = mempool_delete_for_chain(l_chain, a_datum_hash, a_json_reply); - if (res == 0) { - break; - } + l_jobj_chain = json_object_new_string(l_chain->name); + } else { + res = 1; + l_jobj_chain = json_object_new_string("empty chain parameter"); } } else { res = mempool_delete_for_chain(a_chain, a_datum_hash, a_json_reply); + l_jobj_chain = json_object_new_string(a_chain->name); + } + json_object_object_add(l_jobj_ret, "net", l_jobj_net); + json_object_object_add(l_jobj_ret, "chain", l_jobj_chain); + json_object_object_add(l_jobj_ret, "hash", l_jobj_datum_hash); + json_object_object_add(l_jobj_ret, "action", json_object_new_string("delete")); + json_object *l_jobj_ret_code = json_object_new_int(res); + json_object_object_add(l_jobj_ret, "retCode", l_jobj_ret_code); + json_object *l_jobj_status = NULL; + if (!res) { + l_jobj_status = json_object_new_string("deleted"); + } else if (res == 1) { + l_jobj_status = json_object_new_string("datum not found"); + } else { + l_jobj_status = json_object_new_string("datum was found but could not be deleted"); } + json_object_object_add(l_jobj_ret, "status", l_jobj_status); + json_object_array_add(*a_json_reply, l_jobj_ret); if (res) { - char *l_msg_str = dap_strdup_printf("Error! Can't %s datum %s", res == 1 ? "find" : "delete", a_datum_hash); - if (!l_msg_str) { - dap_json_rpc_allocation_error; - return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; - } - json_object *l_msg = json_object_new_string(l_msg_str); - DAP_DELETE(l_msg_str); - if (!l_msg) { - dap_json_rpc_allocation_error; - return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; - } - json_object_array_add(*a_json_reply, l_msg); return COM_MEMPOOL_DELETE_ERR_DATUM_NOT_FOUND; } return 0; @@ -3406,9 +3418,10 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * "Need master node role or higher for network %s to process this command", a_net->pub.name); return DAP_COM_MEMPOOL_PROC_LIST_ERROR_NODE_ROLE_NOT_FULL; } + dap_chain_t *l_chain = !a_chain ? s_get_chain_with_datum(a_net, a_datum_hash) : a_chain; int ret = 0; - char *l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool_new(a_chain); + char *l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool_new(l_chain); if (!l_gdb_group_mempool){ dap_json_rpc_error_add(DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_GROUP_NAME, "Failed to get mempool group name on network %s", a_net->pub.name); @@ -3668,7 +3681,7 @@ int _cmd_mempool_dump(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * } else { dap_chain_t *l_chain = NULL; DL_FOREACH(a_net->pub.chains, l_chain){ - char *l_group_mempool = dap_chain_net_get_gdb_group_mempool_new(a_chain); + char *l_group_mempool = dap_chain_net_get_gdb_group_mempool_new(l_chain); if (!_cmd_mempool_dump_from_group(a_net->pub.id, l_group_mempool, a_datum_hash, a_hash_out_type, a_json_reply)){ DAP_DELETE(l_group_mempool); break; @@ -3800,10 +3813,6 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) ret = _cmd_mempool_proc_all(l_net, l_chain, a_str_reply); } break; case SUBCMD_DELETE: { - if (!l_chain) { - dap_json_rpc_error_add(-2, "The chain parameter was not specified or was specified incorrectly."); - ret = -2; - } if (l_datum_hash) { ret = _cmd_mempool_delete(l_net, l_chain, l_datum_hash, a_str_reply); } else { @@ -4898,13 +4907,16 @@ int com_token_emit(int a_argc, char **a_argv, void **a_str_reply) } dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-chain_emission", &l_chain_emission_str); - if(l_chain_emission_str) { - if((l_chain_emission = dap_chain_net_get_chain_by_name(l_net, l_chain_emission_str)) == NULL) { // Can't find such chain - dap_cli_server_cmd_set_reply_text(a_str_reply, - "token_emit requires parameter '-chain_emission' to be valid chain name in chain net %s" - " or set default datum type in chain configuration file", l_net->pub.name); - return -45; - } + if(l_chain_emission_str) + l_chain_emission = dap_chain_net_get_chain_by_name(l_net, l_chain_emission_str); + else + l_chain_emission = dap_chain_net_get_default_chain_by_chain_type(l_net, CHAIN_TYPE_EMISSION); + + if (l_chain_emission == NULL) { // Can't find such chain + dap_cli_server_cmd_set_reply_text(a_str_reply, + "token_emit requires parameter '-chain_emission' to be valid chain name in chain net %s" + " or set default datum type in chain configuration file", l_net->pub.name); + return -45; } } else { if (l_emission_hash_str) { diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c index 99ea171cf9..a8b7ece6ff 100644 --- a/modules/type/blocks/dap_chain_cs_blocks.c +++ b/modules/type/blocks/dap_chain_cs_blocks.c @@ -172,58 +172,58 @@ int dap_chain_cs_blocks_init() s_debug_more = dap_config_get_item_bool_default(g_config, "blocks", "debug_more", false); dap_cli_server_cmd_add ("block", s_cli_blocks, "Create and explore blockchains", "New block create, fill and complete commands:\n" - "block -net <net_name> -chain <chain_name> new\n" + "block -net <net_name> [-chain <chain_name>] new\n" "\t\tCreate new block and flush memory if was smth formed before\n\n" - "block -net <net_name> -chain <chain_name> new_datum_add <datum_hash>\n" + "block -net <net_name> [-chain <chain_name>] new_datum_add <datum_hash>\n" "\t\tAdd block section from datum <datum hash> taken from the mempool\n\n" - "block -net <net_name> -chain <chain_name> new_datum_del <datum_hash>\n" + "block -net <net_name> [-chain <chain_name>] new_datum_del <datum_hash>\n" "\t\tDel block section with datum <datum hash>\n\n" - "block -net <net_name> -chain <chain_name> new_datum_list\n" + "block -net <net_name> [-chain <chain_name>] new_datum_list\n" "\t\tList block sections and show their datums hashes\n\n" - "block -net <net_name> -chain <chain_name> new_datum\n\n" + "block -net <net_name> [-chain <chain_name>] new_datum\n\n" "\t\tComplete the current new round, verify it and if everything is ok - publish new blocks in chain\n\n" "Blockchain explorer:\n" - "block -net <net_name> -chain <chain_name> dump <block_hash>\n" + "block -net <net_name> [-chain <chain_name>] dump <block_hash>\n" "\t\tDump block info\n\n" - "block -net <net_name> -chain <chain_name> list [{signed | first_signed}] [-limit] [-offset]" + "block -net <net_name> [-chain <chain_name>] list [{signed | first_signed}] [-limit] [-offset]" " [-from_hash <block_hash>] [-to_hash <block_hash>] [-from_date <YYMMDD>] [-to_date <YYMMDD>]" " [{-cert <signing_cert_name> | -pkey_hash <signing_cert_pkey_hash>} [-unspent]]\n" "\t\t List blocks\n\n" - "block -net <net_name> -chain <chain_name> count\n" + "block -net <net_name> [-chain <chain_name>] count\n" "\t\t Show count block\n\n" "Commission collect:\n" - "block -net <net_name> -chain <chain_name> fee collect" + "block -net <net_name> [-chain <chain_name>] fee collect" " -cert <priv_cert_name> -addr <addr> -hashes <hashes_list> -fee <value>\n" "\t\t Take delegated part of commission\n\n" "Reward for block signs:\n" - "block -net <net_name> -chain <chain_name> reward set" + "block -net <net_name> [-chain <chain_name>] reward set" " -cert <poa_cert_name> -value <value>\n" "\t\t Set base reward for sign for one block at one minute\n\n" - "block -net <net_name> -chain <chain_name> reward show" + "block -net <net_name> [-chain <chain_name>] reward show" " -cert <poa_cert_name> -value <value>\n" "\t\t Show base reward for sign for one block at one minute\n\n" - "block -net <net_name> -chain <chain_name> reward collect" + "block -net <net_name> [-chain <chain_name>] reward collect" " -cert <priv_cert_name> -addr <addr> -hashes <hashes_list> -fee <value>\n" "\t\t Take delegated part of reward\n\n" "Rewards and fees autocollect status:\n" - "block -net <net_name> -chain <chain_name> autocollect status\n" + "block -net <net_name> [-chain <chain_name>] autocollect status\n" "\t\t Show rewards and fees automatic collecting status (enabled or not)." " Show prepared blocks for collecting rewards and fees if status is enabled\n\n" "Rewards and fees autocollect renew:\n" - "block -net <net_name> -chain <chain_name> autocollect renew\n" + "block -net <net_name> [-chain <chain_name>] autocollect renew\n" " -cert <priv_cert_name> -addr <addr>\n" "\t\t Update reward and fees block table." " Automatic collection of commission in case of triggering of the setting\n\n" diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index 5a3555f1dd..9e574fff9a 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -150,19 +150,19 @@ int dap_chain_cs_dag_init() s_debug_more = dap_config_get_item_bool_default(g_config, "dag", "debug_more", false); s_threshold_enabled = dap_config_get_item_bool_default(g_config, "dag", "threshold_enabled",false); debug_if(s_debug_more, L_DEBUG, "Thresholding %s", s_threshold_enabled ? "enabled" : "disabled"); - dap_cli_server_cmd_add ("dag", s_cli_dag, "DAG commands", - "dag event sign -net <net_name> -chain <chain_name> -event <event_hash>\n" + dap_cli_server_cmd_add ("dag", s_cli_dag, "DAG commands", + "dag event sign -net <net_name> [-chain <chain_name>] -event <event_hash>\n" "\tAdd sign to event <event hash> in round.new. Hash doesn't include other signs so event hash\n" "\tdoesn't changes after sign add to event. \n\n" - "dag event dump -net <net_name> -chain <chain_name> -event <event_hash> -from {events | events_lasts | threshold | round.new | round.<Round id in hex>} [-H {hex | base58(default)}]\n" + "dag event dump -net <net_name> [-chain <chain_name>] -event <event_hash> -from {events | events_lasts | threshold | round.new | round.<Round id in hex>} [-H {hex | base58(default)}]\n" "\tDump event info\n\n" - "dag event list -net <net_name> -chain <chain_name> -from {events | events_lasts | threshold | round.new | round.<Round id in hex>} [-limit] [-offset]\n\n" + "dag event list -net <net_name> [-chain <chain_name>] -from {events | events_lasts | threshold | round.new | round.<Round id in hex>} [-limit] [-offset]\n\n" "\tShow event list \n\n" - "dag event count -net <net_name> -chain <chain_name>\n" + "dag event count -net <net_name> [-chain <chain_name>]\n" "\tShow count event \n\n" - "dag round complete -net <net_name> -chain <chain_name> \n" + "dag round complete -net <net_name> [-chain <chain_name>] \n" "\tComplete the current new round, verify it and if everything is ok - publish new events in chain\n" - "dag round find -net <net_name> -chain <chain_name> -datum <datum_hash> \n" + "dag round find -net <net_name> [-chain <chain_name>] -datum <datum_hash> \n" "\tSearches for rounds that have events that contain the specified datum.\n\n" ); log_it(L_NOTICE,"Initialized DAG chain items organization class"); @@ -1368,14 +1368,14 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) if ((l_net == NULL) || (l_chain == NULL)){ return -1; - } + } l_dag = DAP_CHAIN_CS_DAG(l_chain); const char *l_chain_type = dap_chain_get_cs_type(l_chain); if (!strstr(l_chain_type, "dag_")){ dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_CHAIN_TYPE_ERR,"Type of chain %s is not dag. This chain with type %s is not supported by this command", - l_chain->name, l_chain_type); + l_chain->name, l_chain_type); return -DAP_CHAIN_NODE_CLI_COM_DAG_CHAIN_TYPE_ERR; } @@ -1411,7 +1411,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) size_t l_event_size = l_round_item->event_size; dap_hash_fast(l_event, l_event_size, &l_event_hash); int l_ret_event_verify; - if ( ( l_ret_event_verify = l_dag->callback_cs_verify (l_dag,l_event,l_event_size) ) !=0 ){// if consensus accept the event + if ( ( l_ret_event_verify = l_dag->callback_cs_verify (l_dag,l_event,l_event_size) ) !=0 ){// if consensus accept the event dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_EVENT_ERR,"Error! Event %s is not passing consensus verification, ret code %d\n", l_objs[i].key, l_ret_event_verify ); ret = -DAP_CHAIN_NODE_CLI_COM_DAG_EVENT_ERR; @@ -1423,7 +1423,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) if ( ! l_verify_only ){ if (s_chain_callback_atom_add(l_chain, l_event, l_event_size, &l_event_hash)!= ATOM_ACCEPT) { // Add new atom in chain snprintf(l_buf, 150, "Event %s not added in chain\n", l_objs[i].key); - json_object_object_add(json_obj_round,"status add", json_object_new_string(l_buf)); + json_object_object_add(json_obj_round,"status add", json_object_new_string(l_buf)); } else { // add event to delete l_list_to_del = dap_list_prepend(l_list_to_del, (void *)l_objs[i].key); @@ -1497,13 +1497,13 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) } dap_global_db_objs_delete(l_objs, l_objs_size); DAP_DELETE(l_datum_in_hash); - if (!l_search_events) { + if (!l_search_events) { snprintf(l_buf, 150, "Datum hash %s not found in round event.\n", l_datum_hash_str); json_object_object_add(json_obj_round,"find result", json_object_new_string(l_buf)); - } + } return 0; } - }else if ( l_event_cmd_str ) { + }else if ( l_event_cmd_str ) { char *l_datum_hash_hex_str = NULL; char *l_datum_hash_base58_str = NULL; if ( strcmp( l_event_cmd_str, "list" ) == 0 ) { @@ -1539,7 +1539,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) if (l_event_hash_hex_str) dap_chain_hash_fast_from_str(l_event_hash_hex_str, &l_event_hash); - switch (l_event_subcmd) { + switch (l_event_subcmd) { case SUBCMD_EVENT_DUMP: { json_object * json_obj_event = json_object_new_object(); @@ -1565,7 +1565,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) l_event = l_event_item->event; else { ret = -DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR; - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR,"Can't find event %s in events_last table\n", l_event_hash_str); + dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR,"Can't find event %s in events_last table\n", l_event_hash_str); break; } } else if (!l_from_events_str || strcmp(l_from_events_str,"events") == 0) { @@ -1578,7 +1578,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) l_event_size = l_event_item->event_size; } else { ret = -DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR; - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR,"Can't find event %s in events table\n", l_event_hash_str); + dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR,"Can't find event %s in events table\n", l_event_hash_str); break; } } else if (l_from_events_str && strcmp(l_from_events_str,"threshold") == 0) { @@ -1590,13 +1590,13 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) l_event = l_event_item->event; else { ret = -DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR; - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR,"Can't find event %s in threshold table\n", l_event_hash_str); + dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR,"Can't find event %s in threshold table\n", l_event_hash_str); break; } } else { ret = -DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR; dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR, - "Wrong events_from option \"%s\", need one of variant: events, round.new, events_lasts, threshold", l_from_events_str); + "Wrong events_from option \"%s\", need one of variant: events, round.new, events_lasts, threshold", l_from_events_str); break; } @@ -1611,7 +1611,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) json_object_object_add(json_obj_event,"ts_update", json_object_new_string(buf)); dap_nanotime_to_str_rfc822(buf, DAP_TIME_STR_SIZE, l_round_item->round_info.ts_update); json_object_object_add(json_obj_event,"datum_hash", json_object_new_string(dap_chain_hash_fast_to_str_static(&l_round_item->round_info.datum_hash))); - json_object_object_add(json_obj_event,"ts_update", json_object_new_string(buf)); + json_object_object_add(json_obj_event,"ts_update", json_object_new_string(buf)); } // Header @@ -1648,7 +1648,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_time_to_str_rfc822(buf, DAP_TIME_STR_SIZE, l_datum->header.ts_create); json_object_object_add(json_obj_event,"ts_create", json_object_new_string(buf)); json_object_object_add(json_obj_event,"data_size", json_object_new_uint64(l_datum->header.data_size)); - + // Signatures json_object_object_add(json_obj_event,"signs count", json_object_new_uint64(l_event->header.signs_count)); l_offset += l_datum_size; @@ -1667,7 +1667,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) json_object_object_add(json_obj_event,"type", json_object_new_string(dap_sign_type_to_str( l_sign->header.type ))); json_object_object_add(json_obj_event,"pkey_hash", json_object_new_string(l_hash_str)); - + l_offset += l_sign_size; } dap_chain_datum_dump_json(json_obj_event, l_datum, l_hash_out_type, l_net->pub.id); @@ -1687,24 +1687,24 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) json_object * json_arr_obj_event = json_object_new_array(); const char *l_limit_str = NULL, *l_offset_str = NULL; dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-limit", &l_limit_str); - dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-offset", &l_offset_str); + dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-offset", &l_offset_str); char *ptr; size_t l_limit = l_limit_str ? strtoull(l_limit_str, &ptr, 10) : 1000; size_t l_offset = l_offset_str ? strtoull(l_offset_str, &ptr, 10) : 0; if (l_offset) - json_object_object_add(json_obj_event_list,"offset", json_object_new_uint64(l_offset)); + json_object_object_add(json_obj_event_list,"offset", json_object_new_uint64(l_offset)); if (l_limit) json_object_object_add(json_obj_event_list,"limit", json_object_new_uint64(l_limit)); - + if (l_from_events_str && strcmp(l_from_events_str,"round.new") == 0) { char * l_gdb_group_events = DAP_CHAIN_CS_DAG(l_chain)->gdb_group_events_round_new; if ( l_gdb_group_events ){ dap_global_db_obj_t * l_objs; size_t l_objs_count = 0; - l_objs = dap_global_db_get_all_sync(l_gdb_group_events,&l_objs_count); + l_objs = dap_global_db_get_all_sync(l_gdb_group_events,&l_objs_count); size_t l_arr_start = 0; if (l_offset) { - l_arr_start = l_offset; + l_arr_start = l_offset; } size_t l_arr_end = l_objs_count; if (l_limit) { @@ -1714,13 +1714,13 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) } json_object_object_add(json_obj_event_list,"net name", json_object_new_string(l_net->pub.name)); json_object_object_add(json_obj_event_list,"chain", json_object_new_string(l_chain->name)); - json_object_object_add(json_obj_event_list,"obj count", json_object_new_uint64(l_objs_count)); + json_object_object_add(json_obj_event_list,"obj count", json_object_new_uint64(l_objs_count)); for (size_t i = l_arr_start; i < l_arr_end; i++) { json_object * json_obj_event_i = json_object_new_object(); if (!strcmp(DAG_ROUND_CURRENT_KEY, l_objs[i].key)) { - json_object_object_add(json_obj_event_i, l_objs[i].key, json_object_new_uint64(*(uint64_t *)l_objs[i].value)); - json_object_array_add(json_arr_obj_event, json_obj_event_i); + json_object_object_add(json_obj_event_i, l_objs[i].key, json_object_new_uint64(*(uint64_t *)l_objs[i].value)); + json_object_array_add(json_arr_obj_event, json_obj_event_i); continue; } dap_chain_cs_dag_event_t * l_event = (dap_chain_cs_dag_event_t *) @@ -1741,12 +1741,12 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) ret = -2; } - json_object_array_add(*json_arr_reply, json_obj_event_list); + json_object_array_add(*json_arr_reply, json_obj_event_list); } else if (!l_from_events_str || (strcmp(l_from_events_str,"events") == 0)) { - pthread_mutex_lock(&PVT(l_dag)->events_mutex); + pthread_mutex_lock(&PVT(l_dag)->events_mutex); size_t l_arr_start = 0; if (l_offset > 0) { - l_arr_start = l_offset; + l_arr_start = l_offset; } size_t l_arr_end = HASH_COUNT(PVT(l_dag)->events); if (l_limit) { @@ -1766,8 +1766,8 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_time_to_str_rfc822(buf, DAP_TIME_STR_SIZE, l_event_item->event->header.ts_created); json_object_object_add(json_obj_event_i, "#", json_object_new_string(dap_itoa(i_tmp))); json_object_object_add(json_obj_event_i, "hash", json_object_new_string(dap_chain_hash_fast_to_str_static(&l_event_item->hash))); - json_object_object_add(json_obj_event_i, "ts_create", json_object_new_string(buf)); - json_object_array_add(json_arr_obj_event, json_obj_event_i); + json_object_object_add(json_obj_event_i, "ts_create", json_object_new_string(buf)); + json_object_array_add(json_arr_obj_event, json_obj_event_i); } } json_object_object_add(json_obj_event_list, "EVENTS", json_arr_obj_event); @@ -1778,7 +1778,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) json_object_object_add(json_obj_event_list,"chain", json_object_new_string(l_chain->name)); json_object_object_add(json_obj_event_list,"total events", json_object_new_uint64(l_events_count)); - json_object_array_add(*json_arr_reply, json_obj_event_list); + json_object_array_add(*json_arr_reply, json_obj_event_list); }else if (l_from_events_str && (strcmp(l_from_events_str,"threshold") == 0) ){ pthread_mutex_lock(&PVT(l_dag)->events_mutex); dap_chain_cs_dag_event_item_t * l_event_item = NULL,*l_event_item_tmp = NULL; @@ -1804,8 +1804,8 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_time_to_str_rfc822(buf, DAP_TIME_STR_SIZE, l_event_item->event->header.ts_created); json_object_object_add(json_obj_event_i, "#", json_object_new_string(dap_itoa(i_tmp))); json_object_object_add(json_obj_event_i, "hash", json_object_new_string(dap_chain_hash_fast_to_str_static(&l_event_item->hash))); - json_object_object_add(json_obj_event_i, "ts_create", json_object_new_string(buf)); - json_object_array_add(json_arr_obj_event, json_obj_event_i); + json_object_object_add(json_obj_event_i, "ts_create", json_object_new_string(buf)); + json_object_array_add(json_arr_obj_event, json_obj_event_i); } json_object_object_add(json_obj_event_list, "TRESHOLD", json_arr_obj_event); size_t l_events_count = HASH_COUNT(PVT(l_dag)->events_treshold); -- GitLab