diff --git a/modules/consensus/block-poa/dap_chain_cs_block_poa.c b/modules/consensus/block-poa/dap_chain_cs_block_poa.c index 5c8bde7f51a9dac2e52fb507395585e054070624..37a9516d8091b1b2cd75d743ee336eeb795ee7c1 100644 --- a/modules/consensus/block-poa/dap_chain_cs_block_poa.c +++ b/modules/consensus/block-poa/dap_chain_cs_block_poa.c @@ -59,7 +59,7 @@ static int s_callback_block_verify(dap_chain_cs_blocks_t * a_blocks, dap_chain_b static size_t s_callback_block_sign(dap_chain_cs_blocks_t *a_blocks, dap_chain_block_t **a_block_ptr, size_t a_block_size); // CLI commands -static int s_cli_block_poa(int argc, char ** argv, char **str_reply); +static int s_cli_block_poa(int argc, char ** argv, void **a_str_reply); static bool s_seed_mode = false; /** @@ -96,7 +96,7 @@ void dap_chain_cs_block_poa_deinit(void) * @param str_reply * @return */ -static int s_cli_block_poa(int argc, char ** argv, char **a_str_reply) +static int s_cli_block_poa(int argc, char ** argv, void **a_str_reply) { int ret = -666; int arg_index = 1; 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 3ed6b9dd31332e1d339d6d84f0817028784a1250..76388e5da89764ed2957b9f8b604657afa648ea2 100644 --- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c +++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c @@ -95,7 +95,7 @@ static bool s_round_event_ready_minimum_check(dap_chain_cs_dag_t *a_dag, dap_cha static void s_round_event_cs_done(dap_chain_cs_dag_t * a_dag, uint64_t a_round_id); // CLI commands -static int s_cli_dag_poa(int argc, char ** argv, char **str_reply); +static int s_cli_dag_poa(int argc, char ** argv, void **a_str_reply); static bool s_seed_mode = false; static dap_interval_timer_t s_poa_round_timer = NULL; @@ -173,7 +173,7 @@ void dap_chain_cs_dag_poa_presign_callback_set(dap_chain_t *a_chain, dap_chain_c * @param str_reply * @return */ -static int s_cli_dag_poa(int argc, char ** argv, char **a_str_reply) +static int s_cli_dag_poa(int argc, char ** argv, void **a_str_reply) { int ret = -666; int arg_index = 1; diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index bbba6f9e52001623d10cd23e672ca07a7971aff5..b7e065545bbcae5d23178ea9d16f316ab7732ba8 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -84,7 +84,7 @@ static dap_enc_key_t *s_callback_get_sign_key(dap_chain_t *a_chain); static void s_callback_set_min_validators_count(dap_chain_t *a_chain, uint16_t a_new_value); static void s_db_change_notifier(dap_store_obj_t *a_obj, void * a_arg); -static int s_cli_esbocs(int argc, char ** argv, char **str_reply); +static int s_cli_esbocs(int a_argc, char **a_argv, void **a_str_reply); DAP_STATIC_INLINE const char *s_voting_msg_type_to_str(uint8_t a_type) { @@ -2591,7 +2591,7 @@ static dap_chain_datum_decree_t *s_esbocs_decree_set_min_validators_count(dap_ch * @param str_reply * @return */ -static int s_cli_esbocs(int a_argc, char ** a_argv, char **a_str_reply) +static int s_cli_esbocs(int a_argc, char **a_argv, void **a_str_reply) { int ret = -666; int l_arg_index = 2; @@ -2600,9 +2600,8 @@ static int s_cli_esbocs(int a_argc, char ** a_argv, char **a_str_reply) const char *l_cert_str = NULL, *l_value_str = NULL; - if (dap_chain_node_cli_cmd_values_parse_net_chain(&l_arg_index,a_argc,a_argv,a_str_reply,&l_chain,&l_chain_net)) { + if (dap_chain_node_cli_cmd_values_parse_net_chain(&l_arg_index, a_argc, a_argv, a_str_reply, &l_chain, &l_chain_net)) return -3; - } const char *l_chain_type = dap_chain_net_get_type(l_chain); if (strcmp(l_chain_type, "esbocs")) { dap_cli_server_cmd_set_reply_text(a_str_reply, diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index c0c3f0115cbaa8e0f44ae7becf8a699c2625cb9f..3544354dece6116438b041d23fd980ee27f9d2c3 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -253,7 +253,7 @@ static int s_net_init(const char * a_net_name, uint16_t a_acl_idx); static int s_net_load(dap_chain_net_t *a_net); -static int s_cli_net(int argc, char ** argv, char **str_reply); +static int s_cli_net(int argc, char ** argv, void **a_str_reply); static uint8_t *s_net_set_acl(dap_chain_hash_fast_t *a_pkey_hash); static void s_prepare_links_from_balancer(dap_chain_net_t *a_net); static bool s_new_balancer_link_request(dap_chain_net_t *a_net, int a_link_replace_tries); @@ -1341,7 +1341,7 @@ dap_string_t* dap_cli_list_net() return l_string_ret; } -void s_set_reply_text_node_status(char **a_str_reply, dap_chain_net_t * a_net){ +void s_set_reply_text_node_status(void **a_str_reply, dap_chain_net_t * a_net){ char* l_node_address_text_block = NULL; dap_chain_node_addr_t l_cur_node_addr = { 0 }; l_cur_node_addr.uint64 = dap_chain_net_get_cur_addr_int(a_net); @@ -1490,7 +1490,7 @@ static const char *s_chain_type_convert_to_string(dap_chain_type_t a_type) * @param str_reply * @return */ -static int s_cli_net(int argc, char **argv, char **a_str_reply) +static int s_cli_net(int argc, char **argv, void **a_str_reply) { int arg_index = 1; dap_chain_net_t * l_net = NULL; diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index d839e10623d706334c1ec40b53439faacc2f2f28..4e7fa1e8c6b61ca008e8969e70c1ab15ec73b123 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -119,7 +119,7 @@ #define LOG_TAG "chain_node_cli_cmd" static void s_dap_chain_net_purge(dap_chain_net_t *a_net); -int _cmd_mempool_add_ca(dap_chain_net_t *a_net, dap_chain_t *a_chain, dap_cert_t *a_cert, void ** reply); +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); /** * @brief dap_list_t* get_aliases_by_name Get the aliases by name object @@ -182,7 +182,7 @@ static dap_chain_node_addr_t* s_node_info_get_addr(dap_chain_net_t * a_net, dap_ * @return dap_chain_node_info_t* */ static dap_chain_node_info_t* node_info_read_and_reply(dap_chain_net_t * a_net, dap_chain_node_addr_t *a_address, - char **a_str_reply) + void **a_str_reply) { char *l_key = dap_chain_node_addr_to_hash_str(a_address); if(!l_key) @@ -225,7 +225,7 @@ static dap_chain_node_info_t* node_info_read_and_reply(dap_chain_net_t * a_net, * @return true * @return false */ -static bool node_info_save_and_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, char **a_str_reply) +static bool node_info_save_and_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, void **a_str_reply) { if(!a_node_info || !a_node_info->hdr.address.uint64) { dap_cli_server_cmd_set_reply_text(a_str_reply, "node addr not found"); @@ -273,7 +273,7 @@ static bool node_info_save_and_reply(dap_chain_net_t * a_net, dap_chain_node_inf */ static int node_info_add_with_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, const char *a_alias_str, - const char *a_cell_str, const char *a_ipv4_str, const char *a_ipv6_str, char **a_str_reply) + const char *a_cell_str, const char *a_ipv4_str, const char *a_ipv6_str, void **a_str_reply) { if(!a_node_info->hdr.address.uint64) { @@ -324,7 +324,7 @@ static int node_info_add_with_reply(dap_chain_net_t * a_net, dap_chain_node_info * return 0 Ok, -1 error */ static int node_info_del_with_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, const char *alias_str, - char **a_str_reply) + void **a_str_reply) { if(!a_node_info->hdr.address.uint64 && !alias_str) { dap_cli_server_cmd_set_reply_text(a_str_reply, "addr not found"); @@ -377,7 +377,7 @@ static int node_info_del_with_reply(dap_chain_net_t * a_net, dap_chain_node_info * @return int 0 Ok, -1 error */ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_addr_t * a_addr, bool a_is_full, - const char *a_alias, char **a_str_reply) + const char *a_alias, void **a_str_reply) { int l_ret = 0; dap_string_t *l_string_reply = dap_string_new("Node dump:\n"); @@ -602,9 +602,8 @@ void s_dap_chain_net_purge(dap_chain_net_t * a_net) * @return int * return 0 OK, -1 Err */ -int com_global_db(int a_argc, char ** a_argv, void ** reply) +int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum { CMD_NONE, CMD_NAME_CELL, CMD_ADD, CMD_FLUSH, CMD_RECORD, CMD_WRITE, CMD_READ, CMD_DELETE, CMD_DROP, CMD_GET_KEYS }; @@ -977,7 +976,7 @@ int com_global_db(int a_argc, char ** a_argv, void ** reply) } } -static dap_tsd_t* s_chain_node_cli_com_node_create_tsd_addr(char **a_argv, int a_arg_start, int a_arg_end, char **a_str_reply, const char *a_specified_decree) { +static dap_tsd_t* s_chain_node_cli_com_node_create_tsd_addr(char **a_argv, int a_arg_start, int a_arg_end, void **a_str_reply, const char *a_specified_decree) { const char *l_ban_addr_str = NULL; dap_tsd_t *l_addr_tsd = NULL; if (dap_cli_server_cmd_find_option_val(a_argv, a_arg_start, a_arg_end, "-ip", &l_ban_addr_str)){ @@ -1028,9 +1027,8 @@ static dap_tsd_t* s_chain_node_cli_com_node_create_tsd_addr(char **a_argv, int a /** * Node command */ -int com_node(int a_argc, char ** a_argv, void ** reply) +int com_node(int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum { CMD_NONE, CMD_ADD, CMD_DEL, CMD_ALIAS, CMD_HANDSHAKE, CMD_CONNECT, CMD_DUMP, CMD_CONNECTIONS, CMD_BALANCER, CMD_BAN, CMD_UNBAN, CMD_BANLIST @@ -1613,9 +1611,8 @@ int com_node(int a_argc, char ** a_argv, void ** reply) * @param str_reply * @return int */ -int com_traceroute(int argc, char** argv, void **reply) +int com_traceroute(int argc, char** argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; #ifdef DAP_OS_LINUX const char *addr = NULL; int hops = 0, time_usec = 0; @@ -1704,9 +1701,8 @@ int com_traceroute(int argc, char** argv, void **reply) * @return int * return 0 OK, -1 Err */ -int com_tracepath(int argc, char** argv, void **reply) +int com_tracepath(int argc, char** argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; #ifdef DAP_OS_LINUX const char *addr = NULL; int hops = 0, time_usec = 0; @@ -1788,9 +1784,8 @@ int com_tracepath(int argc, char** argv, void **reply) * @param str_reply * @return int */ -int com_ping(int a_argc, char**a_argv, void **reply) +int com_ping(int a_argc, char**a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; #ifdef DAP_OS_LINUX int n = 4,w = 0; @@ -1871,9 +1866,8 @@ int com_ping(int a_argc, char**a_argv, void **reply) * @param str_reply * @return */ -int com_version(int argc, char ** argv, void **reply) +int com_version(int argc, char ** argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; (void) argc; (void) argv; #ifndef DAP_VERSION @@ -1895,9 +1889,8 @@ int com_version(int argc, char ** argv, void **reply) * @param str_reply * @return int */ -int com_help(int a_argc, char **a_argv, void **reply) +int com_help(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; if (a_argc > 1) { log_it(L_DEBUG, "Help for command %s", a_argv[1]); dap_cli_cmd_t *l_cmd = dap_cli_server_cmd_find(a_argv[1]); @@ -1936,9 +1929,8 @@ int com_help(int a_argc, char **a_argv, void **reply) * @param str_reply * @return int */ -int com_tx_wallet(int a_argc, char **a_argv, void **reply) +int com_tx_wallet(int a_argc, char **a_argv, void **a_str_reply) { -char ** a_str_reply = (char **) reply; const char *c_wallets_path = dap_chain_wallet_get_path(g_config); enum { CMD_NONE, CMD_WALLET_NEW, CMD_WALLET_LIST, CMD_WALLET_INFO, CMD_WALLET_ACTIVATE, CMD_WALLET_DEACTIVATE, CMD_WALLET_CONVERT }; int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; @@ -2389,7 +2381,7 @@ int dap_chain_node_cli_cmd_values_parse_net_chain_for_json(int *a_arg_index, int * @param l_net * @return */ -int dap_chain_node_cli_cmd_values_parse_net_chain(int *a_arg_index, int a_argc, char **a_argv, char **a_str_reply, +int dap_chain_node_cli_cmd_values_parse_net_chain(int *a_arg_index, int a_argc, char **a_argv, void **a_str_reply, dap_chain_t **a_chain, dap_chain_net_t **a_net) { const char * l_chain_str = NULL; @@ -2519,9 +2511,8 @@ static dap_chain_datum_token_t * s_sign_cert_in_cycle(dap_cert_t ** l_certs, dap * @param str_reply * @return */ -int com_token_decl_sign(int a_argc, char **a_argv, void ** reply) +int com_token_decl_sign(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; int arg_index = 1; const char * l_hash_out_type = NULL; @@ -2900,7 +2891,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object_put(l_jobj_datums); json_object_put(l_obj_chain); dap_global_db_objs_delete(l_objs, l_objs_count); - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return; } json_object_object_add(l_jobj_ts_created, "time_stamp", l_jobj_ts_created_time_stamp); @@ -2915,7 +2906,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object_put(l_jobj_datums); json_object_put(l_obj_chain); dap_global_db_objs_delete(l_objs, l_objs_count); - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return; } if (!dap_hash_fast_compare(&l_datum_real_hash, &l_datum_hash_from_key)){ @@ -2981,7 +2972,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object_put(l_jobj_datums); json_object_put(l_obj_chain); dap_global_db_objs_delete(l_objs, l_objs_count); - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return; } json_object *l_jobj_addr_from = json_object_new_string(l_addr_from_str); @@ -2991,7 +2982,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object_put(l_jobj_datums); json_object_put(l_obj_chain); dap_global_db_objs_delete(l_objs, l_objs_count); - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return; } json_object_object_add(l_jobj_datum, "from", l_jobj_addr_from); @@ -3007,7 +2998,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object_put(l_jobj_datums); json_object_put(l_obj_chain); dap_global_db_objs_delete(l_objs, l_objs_count); - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return; } for (dap_list_t *it = l_list_out_items; it; it = it->next) { @@ -3113,7 +3104,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a DAP_DELETE(l_value_str); DAP_DELETE(l_value_coins_str); dap_global_db_objs_delete(l_objs, l_objs_count); - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return; } json_object_object_add(l_jobj_money, "token", l_jobj_token); @@ -3253,9 +3244,9 @@ typedef enum cmd_mempool_delete_err_list{ * @param a_str_reply * @return */ -int _cmd_mempool_delete(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *a_datum_hash, void **reply) +int _cmd_mempool_delete(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *a_datum_hash, void **a_str_reply) { - json_object ** a_json_reply = (json_object **) reply; + json_object **a_json_reply = (json_object **)a_str_reply; if (!a_net || !a_datum_hash) { dap_json_rpc_error_add(COM_MEMPOOL_DELETE_ERR_DATUM_NOT_FOUND_IN_ARGUMENT, "Net or datum hash not specified"); return COM_MEMPOOL_DELETE_ERR_DATUM_NOT_FOUND_IN_ARGUMENT; @@ -3324,8 +3315,9 @@ typedef enum cmd_mempool_check_err_list { * @param a_str_reply * @return int */ -int _cmd_mempool_check(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *a_datum_hash, const char **a_hash_out_type, void ** reply) { - json_object ** a_json_reply = (json_object **) reply; +int _cmd_mempool_check(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *a_datum_hash, const char *a_hash_out_type, void **a_str_reply) +{ + json_object **a_json_reply = (json_object **)a_str_reply; if (!a_net || !a_datum_hash) { dap_json_rpc_error_add(COM_MEMPOOL_CHECK_ERR_CAN_NOT_FIND_NET, "Error! Both -net <network_name> " @@ -3474,8 +3466,9 @@ typedef enum cmd_mempool_proc_list_error{ * @param a_str_reply * @return */ -int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *a_datum_hash, void **reply) +int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *a_datum_hash, void **a_str_reply) { + json_object **a_json_reply = (json_object **)a_str_reply; // If full or light it doesnt work if(dap_chain_net_get_role(a_net).enums>= NODE_ROLE_FULL){ dap_json_rpc_error_add(DAP_COM_MEMPOOL_PROC_LIST_ERROR_NODE_ROLE_NOT_FULL, @@ -3638,7 +3631,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * } DAP_DELETE(l_gdb_group_mempool); json_object_object_add(l_jobj_res, "verify", l_jobj_verify); - json_object_array_add(*reply, l_jobj_res); + json_object_array_add(*a_json_reply, l_jobj_res); return ret; } @@ -3650,8 +3643,9 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * * @param a_str_reply * @return */ -int _cmd_mempool_proc_all(dap_chain_net_t *a_net, dap_chain_t *a_chain, void **reply) { - json_object ** a_json_reply = (json_object **) reply; +int _cmd_mempool_proc_all(dap_chain_net_t *a_net, dap_chain_t *a_chain, void **a_str_reply) +{ + json_object **a_json_reply = (json_object **)a_str_reply; if (!a_net || !a_chain) { dap_json_rpc_error_add(-2, "The net and chain argument is not set"); return -2; @@ -3710,7 +3704,8 @@ typedef enum _cmd_mempool_dump_error_list{ }_cmd_mempool_dump_error_list_t; int _cmd_mempool_dump_from_group(dap_chain_net_id_t a_net_id, const char *a_group_gdb, const char *a_datum_hash, - const char *a_hash_out_type, json_object **reply) { + const char *a_hash_out_type, json_object **a_json_reply) +{ size_t l_datum_size = 0; dap_chain_datum_t *l_datum = (dap_chain_datum_t *)dap_global_db_get_sync(a_group_gdb, a_datum_hash, &l_datum_size, NULL, NULL ); @@ -3724,18 +3719,19 @@ int _cmd_mempool_dump_from_group(dap_chain_net_id_t a_net_id, const char *a_grou if (!l_datum) { char *l_msg_str = dap_strdup_printf("Error! Can't find datum %s in %s", a_datum_hash, a_group_gdb); if (!l_msg_str) { - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return -1; } json_object *l_jobj_message = json_object_new_string(l_msg_str); return COM_DUMP_ERROR_CAN_NOT_FIND_DATUM; } json_object *l_jobj_datum = dap_chain_datum_to_json(l_datum); - json_object_array_add(*reply, l_jobj_datum); + json_object_array_add(*a_json_reply, l_jobj_datum); return 0; } -int _cmd_mempool_dump(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *a_datum_hash, const char *a_hash_out_type, json_object **reply) { +int _cmd_mempool_dump(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *a_datum_hash, const char *a_hash_out_type, json_object **a_json_reply) +{ if (!a_net || !a_datum_hash || !a_hash_out_type) { dap_json_rpc_error_add(COM_DUMP_ERROR_NULL_IS_ARGUMENT_FUNCTION, "The following arguments are not set: network," " datum hash, and output hash type. " @@ -3744,13 +3740,13 @@ int _cmd_mempool_dump(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * } if (a_chain) { char *l_group_mempool = dap_chain_net_get_gdb_group_mempool_new(a_chain); - _cmd_mempool_dump_from_group(a_net->pub.id, l_group_mempool, a_datum_hash, a_hash_out_type, reply); + _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); } 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); - if (!_cmd_mempool_dump_from_group(a_net->pub.id, l_group_mempool, a_datum_hash, a_hash_out_type, reply)){ + 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; } @@ -3760,13 +3756,14 @@ int _cmd_mempool_dump(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * return 0; } -int com_mempool(int a_argc, char **a_argv, void **reply){ +int com_mempool(int a_argc, char **a_argv, void **a_str_reply) +{ + json_object **a_json_reply = (json_object **)a_str_reply; int arg_index = 1; dap_chain_net_t *l_net = NULL; dap_chain_t *l_chain = NULL; - const char *l_addr_b58 = NULL; enum _subcmd {SUBCMD_LIST, SUBCMD_PROC, SUBCMD_PROC_ALL, SUBCMD_DELETE, SUBCMD_ADD_CA, SUBCMD_CHECK, SUBCMD_DUMP}; - enum _subcmd l_cmd; + enum _subcmd l_cmd = 0; if (a_argv[1]) { if (!dap_strcmp(a_argv[1], "list")) { l_cmd = SUBCMD_LIST; @@ -3786,16 +3783,16 @@ int com_mempool(int a_argc, char **a_argv, void **reply){ char *l_str_err = dap_strdup_printf("Invalid sub command specified. Ыub command %s " "is not supported.", a_argv[1]); if (!l_str_err) { - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return -1; } json_object *l_jobj_str_err = json_object_new_string(l_str_err); DAP_DELETE(l_str_err); if (!l_jobj_str_err) { - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return -1; } - json_object_array_add(*reply, l_jobj_str_err); + json_object_array_add(*a_json_reply, l_jobj_str_err); return -2; } } @@ -3824,7 +3821,7 @@ int com_mempool(int a_argc, char **a_argv, void **reply){ if (!obj_ret || !obj_net) { json_object_put(obj_ret); json_object_put(obj_net); - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return -1; } json_object_object_add(obj_ret, "net", obj_net); @@ -3832,16 +3829,16 @@ int com_mempool(int a_argc, char **a_argv, void **reply){ if (dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-addr", &l_wallet_addr) && !l_wallet_addr) { json_object *l_jobj_err = json_object_new_string("Parameter '-addr' require <addr>"); if (!l_jobj_err) { - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return -1; } - json_object_array_add(*reply, l_jobj_err); + json_object_array_add(*a_json_reply, l_jobj_err); return -3; } json_object *l_jobj_chains = json_object_new_array(); if (!l_jobj_chains) { json_object_put(obj_ret); - DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; + dap_json_rpc_allocation_error; return -1; } if(l_chain) { @@ -3852,14 +3849,14 @@ int com_mempool(int a_argc, char **a_argv, void **reply){ } } json_object_object_add(obj_ret, "chains", l_jobj_chains); - json_object_array_add(*reply, obj_ret); + json_object_array_add(*a_json_reply, obj_ret); ret = 0; } break; case SUBCMD_PROC: { - ret = _cmd_mempool_proc(l_net, l_chain, l_datum_hash, reply); + ret = _cmd_mempool_proc(l_net, l_chain, l_datum_hash, a_str_reply); } break; case SUBCMD_PROC_ALL: { - ret = _cmd_mempool_proc_all(l_net, l_chain, reply); + ret = _cmd_mempool_proc_all(l_net, l_chain, a_str_reply); } break; case SUBCMD_DELETE: { if (!l_chain) { @@ -3867,7 +3864,7 @@ int com_mempool(int a_argc, char **a_argv, void **reply){ ret = -2; } if (l_datum_hash) { - ret = _cmd_mempool_delete(l_net, l_chain, l_datum_hash, reply); + ret = _cmd_mempool_delete(l_net, l_chain, l_datum_hash, a_str_reply); } else { dap_json_rpc_error_add(-3, "Error! %s requires -datum <datum hash> option", a_argv[0]); ret = -3; @@ -3885,14 +3882,14 @@ int com_mempool(int a_argc, char **a_argv, void **reply){ dap_json_rpc_error_add(-4, "Cert with name '%s' not found.", l_ca_name); ret = -4; } - ret = _cmd_mempool_add_ca(l_net, l_chain, l_cert, reply); + ret = _cmd_mempool_add_ca(l_net, l_chain, l_cert, a_str_reply); DAP_DELETE(l_cert); } break; case SUBCMD_CHECK: { - ret = _cmd_mempool_check(l_net, l_chain, l_datum_hash, l_hash_out_type, reply); + ret = _cmd_mempool_check(l_net, l_chain, l_datum_hash, l_hash_out_type, a_str_reply); } break; case SUBCMD_DUMP: { - ret = _cmd_mempool_dump(l_net, l_chain, l_datum_hash, l_hash_out_type, reply); + ret = _cmd_mempool_dump(l_net, l_chain, l_datum_hash, l_hash_out_type, a_json_reply); } break; } DAP_DEL_Z(l_datum_hash); @@ -3973,7 +3970,7 @@ typedef struct _dap_sdk_cli_params { dap_cli_token_additional_params ext; } dap_sdk_cli_params, *pdap_sdk_cli_params; -static int s_parse_common_token_decl_arg(int a_argc, char ** a_argv, char ** a_str_reply, dap_sdk_cli_params* a_params, bool a_update_token) +static int s_parse_common_token_decl_arg(int a_argc, char ** a_argv, void **a_str_reply, dap_sdk_cli_params* a_params, bool a_update_token) { a_params->type = DAP_CHAIN_DATUM_TOKEN_TYPE_DECL; dap_cli_server_cmd_find_option_val(a_argv, 0, a_argc, "-H", &a_params->hash_out_type); @@ -4085,7 +4082,7 @@ static int s_parse_common_token_decl_arg(int a_argc, char ** a_argv, char ** a_s return 0; } -static int s_parse_additional_token_decl_arg(int a_argc, char ** a_argv, char ** a_str_reply, dap_sdk_cli_params* a_params) +static int s_parse_additional_token_decl_arg(int a_argc, char ** a_argv, void **a_str_reply, dap_sdk_cli_params* a_params) { dap_cli_server_cmd_find_option_val(a_argv, 0, a_argc, "-flags", &a_params->ext.flags); dap_cli_server_cmd_find_option_val(a_argv, 0, a_argc, "-total_signs_valid", &a_params->ext.total_signs_valid); @@ -4194,7 +4191,7 @@ static int s_parse_additional_token_decl_arg(int a_argc, char ** a_argv, char ** return 0; } -static int s_token_decl_check_params(int a_argc, char **a_argv, char **a_str_reply, dap_sdk_cli_params *a_params, bool a_update_token) +static int s_token_decl_check_params(int a_argc, char **a_argv, void **a_str_reply, dap_sdk_cli_params *a_params, bool a_update_token) { int l_parse_params = s_parse_common_token_decl_arg(a_argc,a_argv,a_str_reply,a_params, a_update_token); if (l_parse_params) @@ -4293,9 +4290,8 @@ static int s_token_decl_check_params(int a_argc, char **a_argv, char **a_str_rep "\t -tx_sender_blocked <value>:\t Blocked tx sender(s)\n" "\n" */ -int com_token_decl(int a_argc, char ** a_argv, void ** reply) +int com_token_decl(int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; const char * l_ticker = NULL; uint256_t l_total_supply = {}; // 256 uint16_t l_signs_emission = 0; @@ -4630,9 +4626,8 @@ int com_token_decl(int a_argc, char ** a_argv, void ** reply) "\t -tx_sender_blocked_remove <value>:\t Remove tx sender(s) from blocked\n" "\n" */ -int com_token_update(int a_argc, char ** a_argv, void ** reply) +int com_token_update(int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; const char * l_ticker = NULL; uint256_t l_total_supply = {}; // 256 uint16_t l_signs_emission = 0; @@ -4797,9 +4792,8 @@ int com_token_update(int a_argc, char ** a_argv, void ** reply) * @param str_reply * @return */ -int com_token_emit(int a_argc, char **a_argv, void **reply) +int com_token_emit(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; int arg_index = 1; const char *str_tmp = NULL; //const char *str_fee = NULL; @@ -4996,9 +4990,8 @@ int com_token_emit(int a_argc, char **a_argv, void **reply) * @param a_str_reply * @return int */ -int com_tx_cond_create(int a_argc, char ** a_argv, void **reply) +int com_tx_cond_create(int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; (void) a_argc; int arg_index = 1; const char *c_wallets_path = dap_chain_wallet_get_path(g_config); @@ -5164,9 +5157,9 @@ typedef enum cmd_mempool_add_ca_error_list{ * @param a_str_reply * @return */ -int _cmd_mempool_add_ca(dap_chain_net_t *a_net, dap_chain_t *a_chain, dap_cert_t *a_cert, void ** reply) +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) { - json_object ** a_json_reply = (json_object **) reply; + json_object **a_json_reply = (json_object **)a_str_reply; if (!a_net || !a_chain || !a_cert){ dap_json_rpc_error_add(COM_MEMPOOL_ADD_CA_ERROR_NET_NOT_FOUND, "The network or certificate attribute was not passed."); return COM_MEMPOOL_ADD_CA_ERROR_NET_NOT_FOUND; @@ -5256,7 +5249,7 @@ int _cmd_mempool_add_ca(dap_chain_net_t *a_net, dap_chain_t *a_chain, dap_cert_t * @param a_str_reply * @return */ -int com_chain_ca_copy( int a_argc, char ** a_argv, void ** reply) +int com_chain_ca_copy( int a_argc, char ** a_argv, void **a_str_reply) { int l_argc = a_argc + 1; char **l_argv = DAP_NEW_Z_COUNT(char*, l_argc); @@ -5264,7 +5257,7 @@ int com_chain_ca_copy( int a_argc, char ** a_argv, void ** reply) l_argv[1] = "add_ca"; for (int i = 1; i < a_argc; i++) l_argv[i + 1] = a_argv[i]; - int ret = com_mempool(l_argc, l_argv, reply); + int ret = com_mempool(l_argc, l_argv, a_str_reply); DAP_DEL_Z(l_argv); return ret; } @@ -5279,9 +5272,8 @@ int com_chain_ca_copy( int a_argc, char ** a_argv, void ** reply) * @param a_str_reply * @return */ -int com_chain_ca_pub( int a_argc, char ** a_argv, void ** reply) +int com_chain_ca_pub( int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; int arg_index = 1; // Read params const char * l_ca_name = NULL; @@ -5489,9 +5481,8 @@ static dap_pkey_t* s_json_get_pkey(struct json_object *a_json) * @param str_reply * @return int */ -int com_tx_create_json(int a_argc, char ** a_argv, void ** reply) +int com_tx_create_json(int a_argc, char ** a_argv, void **a_str_reply) { - char** a_str_reply = (char **) reply; int l_arg_index = 1; int l_err_code = 0; const char *l_net_name = NULL; // optional parameter @@ -6139,9 +6130,8 @@ int com_tx_create_json(int a_argc, char ** a_argv, void ** reply) * @param str_reply * @return int */ -int com_tx_create(int a_argc, char **a_argv, void **reply) +int com_tx_create(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; int arg_index = 1; // int cmd_num = 1; // const char *value_str = NULL; @@ -6396,9 +6386,8 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) * @param str_reply * @return int */ -int com_tx_verify(int a_argc, char **a_argv, void ** reply) +int com_tx_verify(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; const char * l_tx_hash_str = NULL; dap_chain_net_t * l_net = NULL; dap_chain_t * l_chain = NULL; @@ -6453,9 +6442,9 @@ int com_tx_verify(int a_argc, char **a_argv, void ** reply) * @param a_str_reply * @return int */ -int com_tx_history(int a_argc, char ** a_argv, void ** reply) +int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) { - json_object ** json_arr_reply = (json_object **) reply; + json_object **json_arr_reply = (json_object **)a_str_reply; int arg_index = 1; const char *l_addr_base58 = NULL; const char *l_wallet_name = NULL; @@ -6535,12 +6524,12 @@ int com_tx_history(int a_argc, char ** a_argv, void ** reply) } else l_net = dap_chain_net_by_id(l_addr->net_id); } - const char* l_sign_str = ""; if (l_wallet_name) { const char *c_wallets_path = dap_chain_wallet_get_path(g_config); dap_chain_wallet_t *l_wallet = dap_chain_wallet_open(l_wallet_name, c_wallets_path); if (l_wallet) { - l_sign_str = dap_chain_wallet_check_sign(l_wallet); + const char *l_sign_str = dap_chain_wallet_check_sign(l_wallet); + //TODO add warning about deprecated signs dap_chain_addr_t *l_addr_tmp = dap_chain_wallet_get_addr(l_wallet, l_net->pub.id); if (l_addr) { if (!dap_chain_addr_compare(l_addr, l_addr_tmp)) { @@ -6635,9 +6624,8 @@ int com_tx_history(int a_argc, char ** a_argv, void ** reply) * @param str_reply * @return int */ -int com_stats(int argc, char **a_argv, void ** reply) +int com_stats(int argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum { CMD_NONE, CMD_STATS_CPU }; @@ -6694,9 +6682,8 @@ int com_stats(int argc, char **a_argv, void ** reply) * @param str_reply * @return int */ -int com_exit(int a_argc, char **a_argv, void ** reply) +int com_exit(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; UNUSED(a_argc); UNUSED(a_argv); UNUSED(a_str_reply); @@ -6715,9 +6702,8 @@ int com_exit(int a_argc, char **a_argv, void ** reply) * @param str_reply * @return int */ -int com_print_log(int a_argc, char **a_argv, void ** reply) +int com_print_log(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; int arg_index = 1; const char * l_str_ts_after = NULL; const char * l_str_limit = NULL; @@ -6758,9 +6744,8 @@ int com_print_log(int a_argc, char **a_argv, void ** reply) * @param a_str_reply * @return */ -int cmd_gdb_export(int a_argc, char **a_argv, void ** reply) +int cmd_gdb_export(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; int arg_index = 1; const char *l_filename = NULL; dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "filename", &l_filename); @@ -6866,9 +6851,8 @@ int cmd_gdb_export(int a_argc, char **a_argv, void ** reply) * @param a_str_reply * @return */ -int cmd_gdb_import(int a_argc, char **a_argv, void ** reply) +int cmd_gdb_import(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; int arg_index = 1; const char *l_filename = NULL; dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "filename", &l_filename); @@ -6970,9 +6954,8 @@ typedef struct _pvt_net_aliases_list{ size_t count_nodes; }_pvt_net_aliases_list_t; -int cmd_remove(int a_argc, char **a_argv, void ** reply) +int cmd_remove(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; //default init const char *return_message = NULL; const char *l_gdb_path = NULL; @@ -7137,8 +7120,8 @@ typedef enum { static int s_sign_file(const char *a_filename, dap_sign_signer_file_t a_flags, const char *a_cert_name, dap_sign_t **a_signed, dap_chain_hash_fast_t *a_hash); -static int s_signer_cmd(int a_arg_index, int a_argc, char **a_argv, char **a_str_reply); -static int s_check_cmd(int a_arg_index, int a_argc, char **a_argv, char **a_str_reply); +static int s_signer_cmd(int a_arg_index, int a_argc, char **a_argv, void **a_str_reply); +static int s_check_cmd(int a_arg_index, int a_argc, char **a_argv, void **a_str_reply); struct opts { char *name; uint32_t cmd; @@ -7146,9 +7129,8 @@ struct opts { #define BUILD_BUG(condition) ((void)sizeof(char[1-2*!!(condition)])) -int com_signer(int a_argc, char **a_argv, void **reply) +int com_signer(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum { CMD_NONE, CMD_SIGN, CMD_CHECK }; @@ -7187,7 +7169,7 @@ int com_signer(int a_argc, char **a_argv, void **reply) static int s_get_key_from_file(const char *a_file, const char *a_mime, const char *a_cert_name, dap_sign_t **a_sign); -static int s_check_cmd(int a_arg_index, int a_argc, char **a_argv, char **a_str_reply) +static int s_check_cmd(int a_arg_index, int a_argc, char **a_argv, void **a_str_reply) { int l_ret = 0; @@ -7421,7 +7403,7 @@ static int s_get_key_from_file(const char *a_file, const char *a_mime, const cha return l_ret; } -static int s_signer_cmd(int a_arg_index, int a_argc, char **a_argv, char **a_str_reply) +static int s_signer_cmd(int a_arg_index, int a_argc, char **a_argv, void **a_str_reply) { enum { OPT_FILE, OPT_MIME, OPT_NET, OPT_CHAIN, OPT_CERT, diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c index 1dc83f5d40ebe2143d65d27b04238200dd79c76f..3e4975beb4b06b9be7340881d8a073bc797c6823 100644 --- a/modules/net/dap_chain_node_cli_cmd_tx.c +++ b/modules/net/dap_chain_node_cli_cmd_tx.c @@ -317,6 +317,13 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, json_object_put(json_obj_datum); return NULL; } + + dap_chain_addr_t l_net_fee_addr = {}; + bool l_net_fee_used = dap_chain_net_tx_get_fee(l_net->pub.id, NULL, &l_net_fee_addr); + bool l_is_need_correction = false; + uint256_t l_corr_value = {}, l_unstake_value = {}; + json_object *l_corr_object = NULL; + bool l_is_unstake = false; // load transactions dap_chain_datum_iter_t *l_datum_iter = a_chain->callback_datum_iter_create(a_chain); @@ -384,12 +391,19 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, case TX_ITEM_TYPE_OUT_EXT: l_src_addr = &((dap_chain_tx_out_ext_t *)l_prev_out_union)->addr; break; - case TX_ITEM_TYPE_OUT_COND: - l_src_subtype = ((dap_chain_tx_out_cond_t *)l_prev_out_union)->header.subtype; - if (l_src_subtype == DAP_CHAIN_TX_OUT_COND_SUBTYPE_FEE) + case TX_ITEM_TYPE_OUT_COND: { + dap_chain_tx_out_cond_t *l_cond_prev = (dap_chain_tx_out_cond_t *)l_prev_out_union; + if (l_cond_prev->header.subtype == DAP_CHAIN_TX_OUT_COND_SUBTYPE_FEE) l_noaddr_token = l_native_ticker; - else + else { + if (l_cond_prev->header.subtype == DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_STAKE_LOCK) { + l_is_unstake = true; + l_unstake_value = l_cond_prev->header.value; + } + l_src_subtype = l_cond_prev->header.subtype; l_noaddr_token = l_src_token; + } + } break; default: break; } @@ -411,6 +425,28 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, json_object_put(j_arr_data); return NULL; } + if (!l_src_addr) { + bool l_dst_addr_present = false; + for (dap_list_t *it = l_list_out_items; it; it = it->next) { + uint8_t l_type = *(uint8_t *)it->data; + dap_chain_addr_t *l_dst_addr = NULL; + switch (l_type) { + case TX_ITEM_TYPE_OUT: + l_dst_addr = &((dap_chain_tx_out_t *)it->data)->addr; + break; + case TX_ITEM_TYPE_OUT_EXT: + l_dst_addr = &((dap_chain_tx_out_ext_t *)it->data)->addr; + default: + break; + } + if (l_dst_addr && dap_chain_addr_compare(l_dst_addr, a_addr)) { + l_dst_addr_present = true; + break; + } + } + if (!l_dst_addr_present) + continue; + } for (dap_list_t *it = l_list_out_items; it; it = it->next) { dap_chain_addr_t *l_dst_addr = NULL; uint8_t l_type = *(uint8_t *)it->data; @@ -437,55 +473,68 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, default: break; } - if (l_src_addr && l_dst_addr && dap_chain_addr_compare(l_dst_addr, l_src_addr) && - dap_strcmp(l_dst_token, l_noaddr_token)) + + if (l_src_addr && l_dst_addr && + dap_chain_addr_compare(l_dst_addr, l_src_addr) && + dap_strcmp(l_noaddr_token, l_dst_token)) continue; // sent to self (coinback) - if (l_src_addr && dap_chain_addr_compare(l_src_addr, a_addr) && - dap_strcmp(l_dst_token, l_noaddr_token)) { + if (l_dst_addr && l_net_fee_used && dap_chain_addr_compare(&l_net_fee_addr, l_dst_addr)) + SUM_256_256(l_fee_sum, l_value, &l_fee_sum); + if (l_dst_addr && dap_chain_addr_compare(l_dst_addr, a_addr)) { if (!l_header_printed) { s_tx_header_print(j_obj_tx, &l_tx_data_ht, l_tx, l_datum_iter->cur_atom_hash, a_hash_out_type, l_ledger, &l_tx_hash, l_datum_iter->ret_code); l_header_printed = true; } - const char *l_dst_addr_str = l_dst_addr ? dap_chain_addr_to_str(l_dst_addr) - : dap_chain_tx_out_cond_subtype_to_str( - ((dap_chain_tx_out_cond_t *)it->data)->header.subtype); + const char *l_src_addr_str = NULL, *l_src_str; + if (l_base_tx) + l_src_str = l_reward_collect ? "reward collecting" : "emission"; + else if (l_src_addr && dap_strcmp(l_dst_token, l_noaddr_token)) + l_src_str = l_src_addr_str = dap_chain_addr_to_str(l_src_addr); + else + l_src_str = dap_chain_tx_out_cond_subtype_to_str(l_src_subtype); + + if (l_is_unstake) + l_value = l_unstake_value; + else if (!dap_strcmp(l_native_ticker, l_noaddr_token)) { + l_is_need_correction = true; + l_corr_value = l_value; + } char *l_value_str = dap_chain_balance_print(l_value); char *l_coins_str = dap_chain_balance_to_coins(l_value); - json_object * j_obj_data = json_object_new_object(); + json_object *j_obj_data = json_object_new_object(); if (!j_obj_data) { dap_json_rpc_allocation_error; json_object_put(j_arr_data); json_object_put(j_obj_tx); return NULL; } - json_object_object_add(j_obj_data, "tx_type", json_object_new_string("send")); - json_object_object_add(j_obj_data, "send_coins", json_object_new_string(l_coins_str)); - json_object_object_add(j_obj_data, "send_datoshi", json_object_new_string(l_value_str)); - json_object_object_add(j_obj_data, "token", l_dst_token ? json_object_new_string(l_dst_token) + json_object_object_add(j_obj_data, "tx_type", json_object_new_string("recv")); + json_object_object_add(j_obj_data, "recv_coins", json_object_new_string(l_coins_str)); + json_object_object_add(j_obj_data, "recv_datoshi", json_object_new_string(l_value_str)); + json_object_object_add(j_obj_data, "token", l_dst_token ? json_object_new_string(l_dst_token) : json_object_new_string("UNKNOWN")); - json_object_object_add(j_obj_data, "destination_address", json_object_new_string(l_dst_addr_str)); - - json_object_array_add(j_arr_data, j_obj_data); - if (l_dst_addr) - DAP_DELETE(l_dst_addr_str); + json_object_object_add(j_obj_data, "source_address", json_object_new_string(l_src_str)); + if (l_is_need_correction) + l_corr_object = j_obj_data; + else + json_object_array_add(j_arr_data, j_obj_data); + DAP_DEL_Z(l_src_addr_str); DAP_DELETE(l_value_str); DAP_DELETE(l_coins_str); - } - if (l_dst_addr && dap_chain_addr_compare(l_dst_addr, a_addr)) { + } else if (!l_src_addr || dap_chain_addr_compare(l_src_addr, a_addr)) { + if (!l_dst_addr && ((dap_chain_tx_out_cond_t *)it->data)->header.subtype == l_src_subtype)\ + continue; if (!l_header_printed) { s_tx_header_print(j_obj_tx, &l_tx_data_ht, l_tx, l_datum_iter->cur_atom_hash, a_hash_out_type, l_ledger, &l_tx_hash, l_datum_iter->ret_code); l_header_printed = true; } - const char *l_src_addr_str = NULL, *l_src_str; - if (l_base_tx) - l_src_str = l_reward_collect ? "reward collecting" : "emission"; - else if (l_src_addr && dap_strcmp(l_dst_token, l_noaddr_token)) - l_src_str = l_src_addr_str = dap_chain_addr_to_str(l_src_addr); - else - l_src_str = dap_chain_tx_out_cond_subtype_to_str(l_src_subtype); + + const char *l_dst_addr_str = l_dst_addr ? dap_chain_addr_to_str(l_dst_addr) + : dap_chain_tx_out_cond_subtype_to_str( + ((dap_chain_tx_out_cond_t *)it->data)->header.subtype); char *l_value_str = dap_chain_balance_print(l_value); char *l_coins_str = dap_chain_balance_to_coins(l_value); json_object * j_obj_data = json_object_new_object(); @@ -495,43 +544,34 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, json_object_put(j_obj_tx); return NULL; } - json_object_object_add(j_obj_data, "tx_type", json_object_new_string("recv")); - json_object_object_add(j_obj_data, "recv_coins", json_object_new_string(l_coins_str)); - json_object_object_add(j_obj_data, "recv_datoshi", json_object_new_string(l_value_str)); - json_object_object_add(j_obj_data, "token", l_dst_token ? json_object_new_string(l_dst_token) + json_object_object_add(j_obj_data, "tx_type", json_object_new_string("send")); + json_object_object_add(j_obj_data, "send_coins", json_object_new_string(l_coins_str)); + json_object_object_add(j_obj_data, "send_datoshi", json_object_new_string(l_value_str)); + json_object_object_add(j_obj_data, "token", l_dst_token ? json_object_new_string(l_dst_token) : json_object_new_string("UNKNOWN")); - json_object_object_add(j_obj_data, "source_address", json_object_new_string(l_src_str)); + json_object_object_add(j_obj_data, "destination_address", json_object_new_string(l_dst_addr_str)); + json_object_array_add(j_arr_data, j_obj_data); - DAP_DEL_Z(l_src_addr_str); + if (l_dst_addr) + DAP_DELETE(l_dst_addr_str); DAP_DELETE(l_value_str); DAP_DELETE(l_coins_str); } } - if (json_object_array_length(j_arr_data) > 0) { - json_object_object_add(j_obj_tx, "data", j_arr_data); - } dap_list_free(l_list_out_items); - // fee for base TX in native token - if (l_header_printed && l_base_tx && !dap_strcmp(l_native_ticker, l_src_token)) { - json_object * j_obj_fee = json_object_new_object(); - json_object * j_arr_fee = json_object_new_array(); - if (!j_arr_fee || !j_obj_fee) { - dap_json_rpc_allocation_error; - json_object_put(j_arr_data); - json_object_put(j_obj_tx); - return NULL; - } - char *l_fee_value_str = dap_chain_balance_print(l_fee_sum); - char *l_fee_coins_str = dap_chain_balance_to_coins(l_fee_sum); - json_object_object_add(j_obj_fee, "fee", json_object_new_string(l_fee_coins_str));; - json_object_object_add(j_obj_fee, "fee_datoshi", json_object_new_string(l_fee_value_str)); - json_object_array_add(j_arr_fee, j_obj_fee); - json_object_object_add(j_obj_tx, "fee", j_arr_fee); - DAP_DELETE(l_fee_value_str); - DAP_DELETE(l_fee_coins_str); + if (l_is_need_correction) { + SUM_256_256(l_corr_value, l_fee_sum, &l_corr_value); + char *l_value_str = dap_chain_balance_print(l_corr_value); + char *l_coins_str = dap_chain_balance_to_coins(l_corr_value); + json_object_object_add(l_corr_object, "recv_coins", json_object_new_string(l_coins_str)); + json_object_object_add(l_corr_object, "recv_datoshi", json_object_new_string(l_value_str)); + json_object_array_add(j_arr_data, l_corr_object); + DAP_DELETE(l_value_str); + DAP_DELETE(l_coins_str); + l_is_need_correction = false; } - if (json_object_object_length(j_obj_tx) > 0) { - json_object_array_add(json_obj_datum, j_obj_tx); + if (json_object_array_length(j_arr_data) > 0) { + json_object_object_add(j_obj_tx, "data", j_arr_data); } } a_chain->callback_datum_iter_delete(l_datum_iter); @@ -847,9 +887,8 @@ static char* dap_db_history_filter(dap_chain_t * a_chain, dap_ledger_t *a_ledger * @param a_str_reply * @return int */ -int com_ledger(int a_argc, char ** a_argv, void **reply) +int com_ledger(int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum { CMD_NONE, CMD_LIST, CMD_LEDGER_HISTORY, CMD_TX_INFO }; int arg_index = 1; const char *l_addr_base58 = NULL; @@ -1115,9 +1154,8 @@ int com_ledger(int a_argc, char ** a_argv, void **reply) * @param a_str_reply * @return int */ -int com_token(int a_argc, char ** a_argv, void **reply) +int com_token(int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum { CMD_NONE, CMD_LIST, CMD_INFO, CMD_TX }; int arg_index = 1; const char *l_net_str = NULL; @@ -1364,9 +1402,8 @@ static dap_chain_datum_anchor_t * s_sign_anchor_in_cycle(dap_cert_t ** a_certs, } // Decree commands handlers -int cmd_decree(int a_argc, char **a_argv, void ** reply) +int cmd_decree(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum { CMD_NONE=0, CMD_CREATE, CMD_SIGN, CMD_ANCHOR, CMD_FIND, CMD_INFO }; enum { TYPE_NONE=0, TYPE_COMMON, TYPE_SERVICE}; enum { SUBTYPE_NONE=0, SUBTYPE_FEE, SUBTYPE_OWNERS, SUBTYPE_MIN_OWNERS, SUBTYPE_IP_BAN}; diff --git a/modules/net/include/dap_chain_node_cli_cmd.h b/modules/net/include/dap_chain_node_cli_cmd.h index 040e4b3b5549dbd6652a930a06f166b391c5b77c..9d0d7252cfe9df7ce12e3ca49a81db5a81c5698f 100644 --- a/modules/net/include/dap_chain_node_cli_cmd.h +++ b/modules/net/include/dap_chain_node_cli_cmd.h @@ -36,18 +36,18 @@ int dap_chain_node_cli_cmd_values_parse_net_chain_for_json(int *a_arg_index, int dap_chain_t **a_chain, dap_chain_net_t **a_net); -int dap_chain_node_cli_cmd_values_parse_net_chain(int *a_arg_index,int a_argc, char **a_argv, char ** a_str_reply, +int dap_chain_node_cli_cmd_values_parse_net_chain(int *a_arg_index, int a_argc, char **a_argv, void **a_str_reply, dap_chain_t ** a_chain, dap_chain_net_t ** a_net); /** * global_db command */ -int com_global_db(int a_argc, char **a_argv, void **reply); +int com_global_db(int a_argc, char **a_argv, void **a_str_reply); /** * Node command */ -int com_node(int a_argc, char **a_argv, void **reply); +int com_node(int a_argc, char **a_argv, void **a_str_reply); #ifndef DAP_OS_ANDROID /** @@ -55,50 +55,50 @@ int com_node(int a_argc, char **a_argv, void **reply); * * return 0 OK, -1 Err */ -int com_traceroute(int a_argc, char** argv, void **reply); +int com_traceroute(int a_argc, char** argv, void **a_str_reply); /** * Tracepath command * * return 0 OK, -1 Err */ -int com_tracepath(int a_argc, char** argv, void **reply); +int com_tracepath(int a_argc, char** argv, void **a_str_reply); /** * Ping command * * return 0 OK, -1 Err */ -int com_ping(int a_argc, char** argv, void **reply); +int com_ping(int a_argc, char** argv, void **a_str_reply); #endif /** * Help command */ -int com_help(int a_argc, char **a_argv, void **reply); +int com_help(int a_argc, char **a_argv, void **a_str_reply); -int com_version(int a_argc, char **a_argv, void **reply); +int com_version(int a_argc, char **a_argv, void **a_str_reply); /** * Token declaration */ -int com_token_decl(int a_argc, char **a_argv, void **reply); +int com_token_decl(int a_argc, char **a_argv, void **a_str_reply); -int com_token_update(int a_argc, char **a_argv, void ** reply); +int com_token_update(int a_argc, char **a_argv, void **a_str_reply); /** * Token declaration add sign */ -int com_token_decl_sign ( int a_argc, char **a_argv, void **reply); +int com_token_decl_sign ( int a_argc, char **a_argv, void **a_str_reply); /* * Token update sign */ -int com_token_update_sign(int argc, char ** argv, void ** reply); +int com_token_update_sign(int argc, char ** argv, void **a_str_reply); /** * Token emission */ -int com_token_emit (int a_argc, char **a_argv, void **reply); +int com_token_emit (int a_argc, char **a_argv, void **a_str_reply); /** @@ -106,23 +106,23 @@ int com_token_emit (int a_argc, char **a_argv, void **reply); * * Wallet info */ -int com_tx_wallet(int a_argc, char **a_argv, void **reply); +int com_tx_wallet(int a_argc, char **a_argv, void **a_str_reply); /** * com_tx_create command * * Create transaction */ -int com_tx_create(int a_argc, char **a_argv, void **reply); -int com_tx_create_json(int a_argc, char **a_argv, void **reply); -int com_tx_cond_create(int a_argc, char **a_argv, void **reply); +int com_tx_create(int a_argc, char **a_argv, void **a_str_reply); +int com_tx_create_json(int a_argc, char **a_argv, void **a_str_reply); +int com_tx_cond_create(int a_argc, char **a_argv, void **a_str_reply); /** * tx_verify command * * Verifing transaction */ -int com_tx_verify(int a_argc, char ** a_argv, void **reply); +int com_tx_verify(int a_argc, char ** a_argv, void **a_str_reply); typedef enum s_com_tx_history_err{ DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_OK = 0, @@ -153,19 +153,19 @@ char *dap_chain_node_cli_com_tx_history_err(int a_code); * * Transaction history for an address */ -int com_tx_history(int a_argc, char ** a_argv, void ** reply); +int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply); // Print log info -int com_print_log(int a_argc, char **a_argv, void **reply); +int com_print_log(int a_argc, char **a_argv, void **a_str_reply); // Print statistics -int com_stats(int a_argc, char **a_argv, void **reply); +int com_stats(int a_argc, char **a_argv, void **a_str_reply); -int com_exit(int a_argc, char **a_argv, void **reply); +int com_exit(int a_argc, char **a_argv, void **a_str_reply); -int cmd_gdb_import(int a_argc, char **a_argv, void **reply); -int cmd_gdb_export(int a_argc, char **a_argv, void **reply); +int cmd_gdb_import(int a_argc, char **a_argv, void **a_str_reply); +int cmd_gdb_export(int a_argc, char **a_argv, void **a_str_reply); typedef enum cmd_mempool_list_err{ DAP_CHAIN_NODE_CLI_COM_MEMPOOL_LIST_OK = 0, @@ -176,13 +176,13 @@ typedef enum cmd_mempool_list_err{ DAP_CHAIN_NODE_CLI_COM_MEMPOOL_LIST_UNKNOWN /* MAX */ } cmd_mempool_list_err_t; -int com_mempool(int a_argc, char **a_argv, void **reply); +int com_mempool(int a_argc, char **a_argv, void **a_str_reply); /** * Place public CA into the mempool */ -int com_chain_ca_pub( int a_argc, char **a_argv, void ** reply); -int com_chain_ca_copy( int a_argc, char **a_argv, void ** reply); -int com_signer(int a_argc, char **a_argv, void ** reply); +int com_chain_ca_pub( int a_argc, char **a_argv, void **a_str_reply); +int com_chain_ca_copy( int a_argc, char **a_argv, void **a_str_reply); +int com_signer(int a_argc, char **a_argv, void **a_str_reply); //remove func -int cmd_remove(int a_argc, char **a_argv, void ** reply); +int cmd_remove(int a_argc, char **a_argv, void **a_str_reply); diff --git a/modules/net/include/dap_chain_node_cli_cmd_tx.h b/modules/net/include/dap_chain_node_cli_cmd_tx.h index 3b196a652b3078796d152edcde6bd5d20a247b61..76a3cd8c912b61599be45f489dc5f8da96cf6333 100644 --- a/modules/net/include/dap_chain_node_cli_cmd_tx.h +++ b/modules/net/include/dap_chain_node_cli_cmd_tx.h @@ -55,17 +55,17 @@ json_object* dap_db_history_tx_all(dap_chain_t *l_chain, dap_chain_net_t* l_net, * ledger command * */ -int com_ledger(int a_argc, char ** a_argv, void **reply); +int com_ledger(int a_argc, char ** a_argv, void **a_str_reply); /** * token command * */ -int com_token(int a_argc, char ** a_argv, void **reply); +int com_token(int a_argc, char ** a_argv, void **a_str_reply); /** * decree command * */ -int cmd_decree(int a_argc, char **a_argv, void ** reply); +int cmd_decree(int a_argc, char **a_argv, void **a_str_reply); diff --git a/modules/net/srv/dap_chain_net_srv.c b/modules/net/srv/dap_chain_net_srv.c index 51576fa3b5eea15fcf62fad139cc248038da6f7f..37da291861be7f4fc2666710d09e156ecf387ae6 100644 --- a/modules/net/srv/dap_chain_net_srv.c +++ b/modules/net/srv/dap_chain_net_srv.c @@ -77,7 +77,7 @@ static pthread_mutex_t s_srv_list_mutex = PTHREAD_MUTEX_INITIALIZER; -static int s_cli_net_srv(int argc, char **argv, char **a_str_reply); +static int s_cli_net_srv(int argc, char **argv, void **a_str_reply); static void s_load(const char * a_path); static void s_load_all(); @@ -188,7 +188,7 @@ void dap_chain_net_srv_deinit(void) * @param a_str_reply * @return */ -static int s_cli_net_srv( int argc, char **argv, char **a_str_reply) +static int s_cli_net_srv( int argc, char **argv, void **a_str_reply) { int arg_index = 1; dap_chain_net_t * l_net = NULL; diff --git a/modules/service/datum/dap_chain_net_srv_datum.c b/modules/service/datum/dap_chain_net_srv_datum.c index afdc23e0639a9c6054be2016d2502546f9dc0229..5d6bed3683d1561a28b16e7aee4a0087c9e5d4fa 100644 --- a/modules/service/datum/dap_chain_net_srv_datum.c +++ b/modules/service/datum/dap_chain_net_srv_datum.c @@ -34,7 +34,7 @@ #define LOG_TAG "chain_net_srv_datum" static dap_chain_net_srv_t *s_srv_datum = NULL; -static int s_srv_datum_cli(int argc, char ** argv, void **reply); +static int s_srv_datum_cli(int argc, char ** argv, void **a_str_reply); void s_order_notficator(dap_store_obj_t *a_obj, void *a_arg); @@ -102,9 +102,8 @@ char* dap_chain_net_srv_datum_custom_add(dap_chain_t * a_chain, const uint8_t *a return l_hash_str; } -static int s_srv_datum_cli(int argc, char ** argv, void **reply) { - char ** a_str_reply = (char **) reply; - int ret = -666; +static int s_srv_datum_cli(int argc, char ** argv, void **a_str_reply) +{ int arg_index = 1; dap_chain_net_t * l_chain_net = NULL; dap_chain_t * l_chain = NULL; @@ -131,7 +130,6 @@ static int s_srv_datum_cli(int argc, char ** argv, void **reply) { if ( l_datum_cmd_str != NULL ) { if ( strcmp(l_datum_cmd_str, "save") == 0) { char * l_gdb_group = dap_chain_net_get_gdb_group_mempool_new(l_chain); - size_t l_datum_size = 0; size_t l_path_length = strlen(l_system_datum_folder)+8+strlen(l_datum_hash_str); char *l_path = DAP_NEW_Z_SIZE(char, l_path_length); diff --git a/modules/service/stake/dap_chain_net_srv_stake_lock.c b/modules/service/stake/dap_chain_net_srv_stake_lock.c index 292d88b50a2e55c883b845ed3f967ea7c8c3d946..4d1fae52e1a61df8d1435f543a717793489dd3e8 100644 --- a/modules/service/stake/dap_chain_net_srv_stake_lock.c +++ b/modules/service/stake/dap_chain_net_srv_stake_lock.c @@ -91,7 +91,7 @@ typedef struct dap_ledger_token_emission_for_stake_lock_item { #define MONTH_INDEX 8 #define YEAR_INDEX 12 -static int s_cli_stake_lock(int a_argc, char **a_argv, void ** reply); +static int s_cli_stake_lock(int a_argc, char **a_argv, void **a_str_reply); // Create stake lock datum static dap_chain_datum_t *s_stake_lock_datum_create(dap_chain_net_t *a_net, dap_enc_key_t *a_key_from, @@ -690,10 +690,9 @@ static void s_error_handler(enum error_code errorCode, dap_string_t *output_line * @param a_str_reply * @return */ -static int s_cli_stake_lock(int a_argc, char **a_argv, void **reply) +static int s_cli_stake_lock(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; - enum{ + enum { CMD_NONE, CMD_HOLD, CMD_TAKE }; diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c index 507e830b0ca63e9ff4f17d7e39f6a10d2d24b446..e05e0d3b4871e8d2aeac9a8a4a878e53853de71e 100644 --- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c +++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c @@ -43,7 +43,7 @@ #define DAP_CHAIN_NET_SRV_STAKE_POS_DELEGATE_GDB_GROUP "delegate_keys" -static int s_cli_srv_stake(int a_argc, char **a_argv, void **reply); +static int s_cli_srv_stake(int a_argc, char **a_argv, void **a_str_reply); static bool s_stake_verificator_callback(dap_ledger_t *a_ledger, dap_chain_tx_out_cond_t *a_cond, dap_chain_datum_tx_t *a_tx_in, bool a_owner); @@ -1082,7 +1082,7 @@ char *s_staker_order_create(dap_chain_net_t *a_net, uint256_t a_value, uint256_t return l_order_hash_str; } -static int s_cli_srv_stake_order(int a_argc, char **a_argv, int a_arg_index, char **a_str_reply, const char *a_hash_out_type) +static int s_cli_srv_stake_order(int a_argc, char **a_argv, int a_arg_index, void **a_str_reply, const char *a_hash_out_type) { enum { CMD_NONE, CMD_CREATE_FEE, CMD_CREATE_VALIDATOR, CMD_CREATE_STAKER, CMD_UPDATE, CMD_LIST, CMD_REMOVE @@ -1625,9 +1625,8 @@ uint256_t dap_chain_net_srv_stake_get_total_weight(dap_chain_net_id_t a_net_id) return l_total_weight; } -static int s_cli_srv_stake(int a_argc, char **a_argv, void **reply) +static int s_cli_srv_stake(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum { CMD_NONE, CMD_ORDER, CMD_DELEGATE, CMD_APPROVE, CMD_LIST, CMD_INVALIDATE, CMD_MIN_VALUE, CMD_CHECK }; diff --git a/modules/service/vpn/dap_chain_net_srv_vpn_cmd.c b/modules/service/vpn/dap_chain_net_srv_vpn_cmd.c index 19a5edaa4ef2dc77aa92d43a3d6b14aaee701f78..c2603e2c35e31fb9be3eaf2e931b087db5a3dc9f 100644 --- a/modules/service/vpn/dap_chain_net_srv_vpn_cmd.c +++ b/modules/service/vpn/dap_chain_net_srv_vpn_cmd.c @@ -31,9 +31,8 @@ static void add_value_text(dap_string_t *l_str, char *l_addstr, uintmax_t a_valu * * VPN statistics */ -int com_vpn_statistics(int a_argc, char ** a_argv, void **reply) +int com_vpn_statistics(int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; // get statistics for all actual sessions dap_list_t *l_sessions_list = dap_stream_session_get_list_sessions(), *l_item; dap_string_t *l_str = dap_string_new(NULL); @@ -92,9 +91,8 @@ int com_vpn_statistics(int a_argc, char ** a_argv, void **reply) * * VPN client control */ -int com_vpn_client(int a_argc, char ** a_argv, void **reply) +int com_vpn_client(int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; #ifndef _WIN32 enum { CMD_NONE, CMD_INIT, CMD_START, CMD_STOP, CMD_STATUS, CMD_CHECK, CMD_CHECK_RESULT diff --git a/modules/service/xchange/dap_chain_net_srv_xchange.c b/modules/service/xchange/dap_chain_net_srv_xchange.c index 1b8092ffa840bbc09dfcaf11cb1c8933437e4ba0..013ccb5d87049bccf779faed40353ff5a920c989 100644 --- a/modules/service/xchange/dap_chain_net_srv_xchange.c +++ b/modules/service/xchange/dap_chain_net_srv_xchange.c @@ -72,7 +72,7 @@ static bool s_xchange_verificator_callback(dap_ledger_t * a_ledger, dap_chain_tx const dap_chain_net_srv_uid_t c_dap_chain_net_srv_xchange_uid = {.uint64= DAP_CHAIN_NET_SRV_XCHANGE_ID}; -static int s_cli_srv_xchange(int a_argc, char **a_argv, void **reply); +static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply); static int s_callback_requested(dap_chain_net_srv_t *a_srv, uint32_t a_usage_id, dap_chain_net_srv_client_remote_t *a_srv_client, const void *a_data, size_t a_data_size); static int s_callback_response_success(dap_chain_net_srv_t *a_srv, uint32_t a_usage_id, dap_chain_net_srv_client_remote_t *a_srv_client, const void *a_data, size_t a_data_size); static int s_callback_response_error(dap_chain_net_srv_t *a_srv, uint32_t a_usage_id, dap_chain_net_srv_client_remote_t *a_srv_client, const void *a_data, size_t a_data_size); @@ -716,7 +716,8 @@ static dap_chain_datum_tx_t *s_xchange_tx_create_exchange(dap_chain_net_srv_xcha log_it(L_ERROR, "Can't add net fee output"); return NULL; } - debug_if(s_debug_more, L_NOTICE, "l_service_fee = %s %s", dap_chain_balance_to_coins(l_net_fee), l_service_ticker); + debug_if(s_debug_more, L_NOTICE, "l_service_fee = %s %s", dap_chain_balance_to_coins(l_net_fee), + l_service_ticker ? l_service_ticker : "UNKNOWN"); } // coin back SUBTRACT_256_256(l_value_transfer, l_value_need, &l_value_back); @@ -982,7 +983,7 @@ dap_chain_net_srv_xchange_price_t *s_xchange_price_from_order(dap_chain_net_t *a * @param a_str_reply * @return */ -static int s_cli_srv_xchange_order(int a_argc, char **a_argv, int a_arg_index, char **a_str_reply) +static int s_cli_srv_xchange_order(int a_argc, char **a_argv, int a_arg_index, void **a_str_reply) { enum { CMD_NONE, CMD_CREATE, CMD_REMOVE, CMD_UPDATE, CMD_HISTORY, CMD_STATUS @@ -1692,14 +1693,8 @@ static bool s_string_append_tx_cond_info( dap_string_t * a_reply_str, } -static int s_cli_srv_xchange_tx_list_addr ( - dap_chain_net_t *a_net, - dap_time_t a_after, - dap_time_t a_before, - dap_chain_addr_t *a_addr, - int a_opt_status, - char **a_str_reply - ) +static int s_cli_srv_xchange_tx_list_addr(dap_chain_net_t *a_net, dap_time_t a_after, dap_time_t a_before, + dap_chain_addr_t *a_addr, int a_opt_status, void **a_str_reply) { dap_chain_hash_fast_t l_tx_first_hash = {0}; dap_chain_datum_tx_t *l_datum_tx; @@ -1738,12 +1733,10 @@ void s_tx_is_order_check(dap_chain_net_t *a_net, dap_chain_datum_tx_t *a_tx, voi *l_tx_list_ptr = dap_list_append(*l_tx_list_ptr, a_tx); } -static int s_cli_srv_xchange(int a_argc, char **a_argv, void **reply) +static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum {CMD_NONE = 0, CMD_ORDER, CMD_ORDERS, CMD_PURCHASE, CMD_ENABLE, CMD_DISABLE, CMD_TX_LIST, CMD_TOKEN_PAIR }; int l_arg_index = 1, l_cmd_num = CMD_NONE; - bool l_rc; if(dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, dap_min(a_argc, l_arg_index + 1), "order", NULL)) { l_cmd_num = CMD_ORDER; diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c index 02f96dc2f8a2125cdb20c8cfd73b2dfe909fdce5..38fce2f0eaa7474f5ccb8e6aa791aa882caecb45 100644 --- a/modules/type/blocks/dap_chain_cs_blocks.c +++ b/modules/type/blocks/dap_chain_cs_blocks.c @@ -82,9 +82,9 @@ typedef struct dap_chain_cs_blocks_pvt #define PVT(a) ((dap_chain_cs_blocks_pvt_t *)(a)->_pvt ) -static int s_cli_parse_cmd_hash(char ** a_argv, int a_arg_index, int a_argc, char **a_str_reply,const char * a_param, dap_chain_hash_fast_t * a_datum_hash); +static int s_cli_parse_cmd_hash(char ** a_argv, int a_arg_index, int a_argc, void **a_str_reply,const char * a_param, dap_chain_hash_fast_t * a_datum_hash); static void s_cli_meta_hash_print( dap_string_t * a_str_tmp, const char * a_meta_title, dap_chain_block_meta_t * a_meta); -static int s_cli_blocks(int a_argc, char ** a_argv, void **reply); +static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply); // Setup BFT consensus and select the longest chunk static void s_bft_consensus_setup(dap_chain_cs_blocks_t * a_blocks); @@ -407,7 +407,7 @@ static char *s_blocks_decree_set_reward(dap_chain_net_t *a_net, dap_chain_t *a_c * @param a_datum_hash * @return */ -static int s_cli_parse_cmd_hash(char ** a_argv, int a_arg_index, int a_argc, char **a_str_reply,const char * a_param, +static int s_cli_parse_cmd_hash(char ** a_argv, int a_arg_index, int a_argc, void **a_str_reply,const char * a_param, dap_chain_hash_fast_t * a_datum_hash) { assert(a_datum_hash); @@ -504,9 +504,8 @@ static void s_print_autocollect_table(dap_chain_net_t *a_net, dap_string_t *a_re * @param a_str_reply * @return */ -static int s_cli_blocks(int a_argc, char ** a_argv, void **reply) +static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum { SUBCMD_UNDEFINED =0, SUBCMD_NEW_FLUSH, diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index 6ab3260bcf88b4e4b579407cc7806cd690804cfe..112828434c6d826cc41dcda9e7d762590f677952 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -131,7 +131,7 @@ static void s_chain_callback_datum_iter_delete(dap_chain_datum_iter_t *a_datum_i static dap_chain_datum_t *s_chain_callback_datum_iter_get_first(dap_chain_datum_iter_t *a_datum_iter); // Get the fisrt datum from dag static dap_chain_datum_t *s_chain_callback_datum_iter_get_next(dap_chain_datum_iter_t *a_datum_iter); // Get the next datum from dag -static int s_cli_dag(int argc, char ** argv, void **reply); +static int s_cli_dag(int argc, char ** argv, void **a_str_reply); void s_dag_events_lasts_process_new_last_event(dap_chain_cs_dag_t * a_dag, dap_chain_cs_dag_event_item_t * a_event_item); static size_t s_dap_chain_callback_get_count_tx(dap_chain_t *a_chain); @@ -1436,9 +1436,8 @@ static dap_chain_datum_t *s_chain_callback_datum_iter_get_next(dap_chain_datum_i * @param str_reply * @return */ -static int s_cli_dag(int argc, char ** argv, void **reply) +static int s_cli_dag(int argc, char ** argv, void **a_str_reply) { - char ** a_str_reply = (char **) reply; enum { SUBCMD_EVENT_CREATE, SUBCMD_EVENT_CANCEL,