From d90b4f69b9e473972a0758f0a87cfbbd563d1b12 Mon Sep 17 00:00:00 2001 From: Olzhas <oljas.jarasbaev@demlabs.net> Date: Tue, 17 Sep 2024 17:22:02 +0700 Subject: [PATCH] [*]change json rpc --- dap-sdk | 2 +- modules/common/dap_chain_datum.c | 19 +- modules/common/include/dap_chain_datum.h | 5 +- .../consensus/esbocs/dap_chain_cs_esbocs.c | 42 +- modules/net/dap_chain_net.c | 132 ++-- modules/net/dap_chain_node_cli_cmd.c | 630 +++++++++--------- modules/net/dap_chain_node_cli_cmd_tx.c | 113 ++-- modules/net/include/dap_chain_node_cli_cmd.h | 2 +- .../net/include/dap_chain_node_cli_cmd_tx.h | 12 +- modules/type/blocks/dap_chain_cs_blocks.c | 130 ++-- modules/type/dag/dap_chain_cs_dag.c | 64 +- 11 files changed, 575 insertions(+), 576 deletions(-) diff --git a/dap-sdk b/dap-sdk index 30bfb069b0..230cbf8160 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit 30bfb069b0bcb7ce57befaab68051d0d4feb414e +Subproject commit 230cbf81609fac169c9bc2bf69533b2427d348da diff --git a/modules/common/dap_chain_datum.c b/modules/common/dap_chain_datum.c index 8394a83ea5..6cef09e630 100644 --- a/modules/common/dap_chain_datum.c +++ b/modules/common/dap_chain_datum.c @@ -516,7 +516,8 @@ bool dap_chain_datum_dump_tx(dap_chain_datum_tx_t *a_datum, * @param a_tx_hash_processed * @param l_tx_num */ -bool dap_chain_datum_dump_tx_json(dap_chain_datum_tx_t *a_datum, +bool dap_chain_datum_dump_tx_json(json_object* a_json_arr_reply, + dap_chain_datum_tx_t *a_datum, const char *a_ticker, json_object* json_obj_out, const char *a_hash_out_type, @@ -617,7 +618,7 @@ bool dap_chain_datum_dump_tx_json(dap_chain_datum_tx_t *a_datum, case TX_ITEM_TYPE_SIG: { dap_sign_t *l_sign = dap_chain_datum_tx_item_sign_get_sig((dap_chain_tx_sig_t*)item); json_object_object_add(json_obj_item,"item type", json_object_new_string("SIG")); - dap_sign_get_information_json(l_sign, json_obj_item, a_hash_out_type); + dap_sign_get_information_json(a_json_arr_reply, l_sign, json_obj_item, a_hash_out_type); dap_chain_addr_t l_sender_addr; dap_chain_addr_fill_from_sign(&l_sender_addr, l_sign, a_net_id); json_object_object_add(json_obj_item,"Sender addr", json_object_new_string(dap_chain_addr_to_str_static(&l_sender_addr))); @@ -639,12 +640,12 @@ bool dap_chain_datum_dump_tx_json(dap_chain_datum_tx_t *a_datum, case (sizeof(dap_sign_t) * 2): { dap_sign_t *l_client = DAP_CAST_PTR( dap_sign_t, ((dap_chain_datum_tx_receipt_t*)item)->exts_n_signs + sizeof(dap_sign_t) ); json_object_object_add(json_obj_item,"Client", json_object_new_string("")); - dap_sign_get_information_json(l_client, json_obj_item, a_hash_out_type); + dap_sign_get_information_json(a_json_arr_reply, l_client, json_obj_item, a_hash_out_type); } case (sizeof(dap_sign_t)): { dap_sign_t *l_provider = DAP_CAST_PTR( dap_sign_t, ((dap_chain_datum_tx_receipt_t*)item)->exts_n_signs ); json_object_object_add(json_obj_item,"Provider", json_object_new_string("")); - dap_sign_get_information_json(l_provider,json_obj_item, a_hash_out_type); + dap_sign_get_information_json(a_json_arr_reply, l_provider,json_obj_item, a_hash_out_type); break; } } @@ -809,10 +810,10 @@ bool dap_chain_datum_dump_tx_json(dap_chain_datum_tx_t *a_datum, * @param a_obj_out * @param a_datum */ -void dap_chain_datum_dump_json(json_object *a_obj_out, dap_chain_datum_t *a_datum, const char *a_hash_out_type, dap_chain_net_id_t a_net_id) +void dap_chain_datum_dump_json(json_object* a_json_arr_reply, json_object *a_obj_out, dap_chain_datum_t *a_datum, const char *a_hash_out_type, dap_chain_net_id_t a_net_id) { if( a_datum == NULL){ - dap_json_rpc_error_add(-1,"==Datum is NULL"); + dap_json_rpc_error_add(a_json_arr_reply, -1,"==Datum is NULL"); return; } json_object * json_obj_datum = json_object_new_object(); @@ -826,7 +827,7 @@ void dap_chain_datum_dump_json(json_object *a_obj_out, dap_chain_datum_t *a_dat size_t l_token_size = a_datum->header.data_size; dap_chain_datum_token_t * l_token = dap_chain_datum_token_read(a_datum->data, &l_token_size); if(l_token_size < sizeof(dap_chain_datum_token_t)){ - dap_json_rpc_error_add(-2,"==Datum has incorrect size. Only %zu, while at least %zu is expected\n", + dap_json_rpc_error_add(a_json_arr_reply, -2,"==Datum has incorrect size. Only %zu, while at least %zu is expected\n", l_token_size, sizeof(dap_chain_datum_token_t)); DAP_DEL_Z(l_token); return; @@ -944,7 +945,7 @@ void dap_chain_datum_dump_json(json_object *a_obj_out, dap_chain_datum_t *a_dat { log_it(L_ERROR, "Illformed DATUM type %d, TSD section is out-of-buffer (%" DAP_UINT64_FORMAT_U " vs %zu)", l_emission->hdr.type, l_emission->data.type_auth.tsd_total_size, l_emission_size); - dap_json_rpc_error_add(-3,"Skip incorrect or illformed DATUM"); + dap_json_rpc_error_add(a_json_arr_reply, -3,"Skip incorrect or illformed DATUM"); break; } dap_chain_datum_token_certs_dump_to_json(json_obj_datum, l_emission->tsd_n_signs + l_emission->data.type_auth.tsd_total_size, @@ -973,7 +974,7 @@ void dap_chain_datum_dump_json(json_object *a_obj_out, dap_chain_datum_t *a_dat } break; case DAP_CHAIN_DATUM_TX: { dap_chain_datum_tx_t *l_tx = (dap_chain_datum_tx_t*)a_datum->data; - dap_chain_datum_dump_tx_json(l_tx, NULL, json_obj_datum, a_hash_out_type, &l_datum_hash, a_net_id); + dap_chain_datum_dump_tx_json(a_json_arr_reply, l_tx, NULL, json_obj_datum, a_hash_out_type, &l_datum_hash, a_net_id); } break; case DAP_CHAIN_DATUM_DECREE:{ dap_chain_datum_decree_t *l_decree = (dap_chain_datum_decree_t *)a_datum->data; diff --git a/modules/common/include/dap_chain_datum.h b/modules/common/include/dap_chain_datum.h index 8227287524..2ef8094525 100644 --- a/modules/common/include/dap_chain_datum.h +++ b/modules/common/include/dap_chain_datum.h @@ -166,11 +166,12 @@ bool dap_chain_datum_dump_tx(dap_chain_datum_tx_t *a_datum, const char *a_hash_out_type, dap_hash_fast_t *a_tx_hash, dap_chain_net_id_t a_net_id); -bool dap_chain_datum_dump_tx_json(dap_chain_datum_tx_t *a_datum, +bool dap_chain_datum_dump_tx_json(json_object* a_json_arr_reply, + dap_chain_datum_tx_t *a_datum, const char *a_ticker, json_object* json_obj_out, const char *a_hash_out_type, dap_hash_fast_t *a_tx_hash, dap_chain_net_id_t a_net_id); json_object * dap_chain_datum_to_json(dap_chain_datum_t* a_datum); -void dap_chain_datum_dump_json(json_object *a_obj_out, dap_chain_datum_t *a_datum, const char *a_hash_out_type, dap_chain_net_id_t a_net_id); +void dap_chain_datum_dump_json(json_object* a_json_arr_reply,json_object *a_obj_out, dap_chain_datum_t *a_datum, const char *a_hash_out_type, dap_chain_net_id_t a_net_id); diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index c92bb23504..8ae666488f 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -3001,14 +3001,14 @@ static int s_cli_esbocs(int a_argc, char **a_argv, void **a_str_reply) int l_arg_index = 1; dap_chain_net_t *l_chain_net = NULL; dap_chain_t *l_chain = NULL; - json_object **json_arr_reply = (json_object **)a_str_reply; + json_object **a_json_arr_reply = (json_object **)a_str_reply; - if (dap_chain_node_cli_cmd_values_parse_net_chain_for_json(&l_arg_index, a_argc, a_argv, &l_chain, &l_chain_net, + if (dap_chain_node_cli_cmd_values_parse_net_chain_for_json(a_json_arr_reply, &l_arg_index, a_argc, a_argv, &l_chain, &l_chain_net, CHAIN_TYPE_ANCHOR)) return -3; const char *l_chain_type = dap_chain_get_cs_type(l_chain); if (strcmp(l_chain_type, DAP_CHAIN_ESBOCS_CS_TYPE_STR)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_CHAIN_TYPE_ERR,"Type of chain \"%s\" is not block. Chain with current consensus \"%s\" is not supported by this command", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_CHAIN_TYPE_ERR,"Type of chain \"%s\" is not block. Chain with current consensus \"%s\" is not supported by this command", l_chain->name, l_chain_type); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_CHAIN_TYPE_ERR; } @@ -3054,22 +3054,22 @@ static int s_cli_esbocs(int a_argc, char **a_argv, void **a_str_reply) const char *l_cert_str = NULL; dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-cert", &l_cert_str); if (!l_cert_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_PARAM_ERR,"Command 'min_validators_count' requires parameter -cert"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_PARAM_ERR,"Command 'min_validators_count' requires parameter -cert"); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_PARAM_ERR; } l_poa_cert = dap_cert_find_by_name(l_cert_str); if (!l_poa_cert) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_CERT_ERR,"Specified certificate not found"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_CERT_ERR,"Specified certificate not found"); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_CERT_ERR; } if (!l_poa_cert->enc_key || !l_poa_cert->enc_key->priv_key_data) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_PVT_KEY_ERR,"Specified certificate doesn't contain a private key"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_PVT_KEY_ERR,"Specified certificate doesn't contain a private key"); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_PVT_KEY_ERR; } } else if (dap_cli_server_cmd_check_option(a_argv, l_arg_index, l_arg_index + 1, "show") > 0) l_subcommand_show = true; else - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_UNKNOWN,"Unrecognized subcommand '%s'", a_argv[l_arg_index]); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_UNKNOWN,"Unrecognized subcommand '%s'", a_argv[l_arg_index]); } int ret = 0; @@ -3081,12 +3081,12 @@ static int s_cli_esbocs(int a_argc, char **a_argv, void **a_str_reply) const char *l_value_str = NULL; dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-val_count", &l_value_str); if (!l_value_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_PARAM_ERR,"Command '%s' requires parameter -val_count", l_subcmd_strs[l_subcmd]); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_PARAM_ERR,"Command '%s' requires parameter -val_count", l_subcmd_strs[l_subcmd]); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_PARAM_ERR; } uint256_t l_value = dap_chain_balance_scan(l_value_str); if (IS_ZERO_256(l_value)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_UNREC_COM_ERR,"Unrecognized number in '-val_count' param"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_UNREC_COM_ERR,"Unrecognized number in '-val_count' param"); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_UNREC_COM_ERR; } dap_chain_datum_decree_t *l_decree = s_esbocs_decree_set_min_validators_count( @@ -3096,17 +3096,17 @@ static int s_cli_esbocs(int a_argc, char **a_argv, void **a_str_reply) json_object * json_obj_out = json_object_new_object(); json_object_object_add(json_obj_out,"status", json_object_new_string("Minimum validators count has been set")); json_object_object_add(json_obj_out,"decree hash", json_object_new_string(l_decree_hash_str)); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); DAP_DEL_MULTY(l_decree, l_decree_hash_str); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_MINVALSET_ERR,"Minimum validators count setting failed"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_MINVALSET_ERR,"Minimum validators count setting failed"); DAP_DEL_Z(l_decree); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_MINVALSET_ERR; } } else{ json_object * json_obj_out = json_object_new_object(); json_object_object_add(json_obj_out,"Minimum validators count", json_object_new_uint64(l_esbocs_pvt->min_validators_count)); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } } break; @@ -3118,17 +3118,17 @@ static int s_cli_esbocs(int a_argc, char **a_argv, void **a_str_reply) if (l_decree && (l_decree_hash_str = s_esbocs_decree_put(l_decree, l_chain_net))) { json_object_object_add(json_obj_out,"Checking signs structure has been", l_subcommand_add ? json_object_new_string("enabled") : json_object_new_string("disabled")); json_object_object_add(json_obj_out,"Decree hash", json_object_new_string(l_decree_hash_str)); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); DAP_DEL_MULTY(l_decree, l_decree_hash_str); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_CHECKING_ERR,"Checking signs structure setting failed"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_CHECKING_ERR,"Checking signs structure setting failed"); DAP_DEL_Z(l_decree); json_object_put(json_obj_out); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_CHECKING_ERR; } } else{ json_object_object_add(json_obj_out,"Checking signs structure is", l_esbocs_pvt->check_signs_structure ? json_object_new_string("enabled") : json_object_new_string("disabled")); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } } break; @@ -3137,12 +3137,12 @@ static int s_cli_esbocs(int a_argc, char **a_argv, void **a_str_reply) const char *l_hash_str = NULL, *l_type_str = NULL; dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-pkey_hash", &l_hash_str); if (!l_hash_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_HASH_ERR,"Command '%s' requires parameter -pkey_hash", l_subcmd_strs[l_subcmd]); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_HASH_ERR,"Command '%s' requires parameter -pkey_hash", l_subcmd_strs[l_subcmd]); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_HASH_ERR; } dap_hash_fast_t l_pkey_hash; if (dap_chain_hash_fast_from_str(l_hash_str, &l_pkey_hash)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_HASH_FORMAT_ERR,"Invalid hash format in 'pkey_hash' param"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_HASH_FORMAT_ERR,"Invalid hash format in 'pkey_hash' param"); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_HASH_FORMAT_ERR; } dap_sign_type_t l_sig_type = { .type = SIG_TYPE_DILITHIUM }; @@ -3156,10 +3156,10 @@ static int s_cli_esbocs(int a_argc, char **a_argv, void **a_str_reply) json_object_object_add(json_obj_out,"Emergency validator", json_object_new_string(dap_chain_hash_fast_to_str_static(&l_pkey_hash))); json_object_object_add(json_obj_out,"status", l_subcommand_add ? json_object_new_string("added") : json_object_new_string("deleted")); json_object_object_add(json_obj_out,"Decree hash", json_object_new_string(l_decree_hash_str)); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); DAP_DEL_MULTY(l_decree, l_decree_hash_str); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_ADD_DEL_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_ADD_DEL_ERR, "Emergency validator %s failed", l_subcommand_add ? "adding" : "deleting"); DAP_DEL_Z(l_decree); return -DAP_CHAIN_NODE_CLI_COM_ESBOCS_ADD_DEL_ERR; @@ -3167,12 +3167,12 @@ static int s_cli_esbocs(int a_argc, char **a_argv, void **a_str_reply) } else{ json_object * json_obj_out = json_object_new_object(); s_print_emergency_validators(json_obj_out, l_esbocs_pvt->emergency_validator_addrs); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } } break; default: - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_ESBOCS_SUB_ERR,"Unrecognized subcommand '%s'", a_argv[l_arg_index - 1]); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_ESBOCS_SUB_ERR,"Unrecognized subcommand '%s'", a_argv[l_arg_index - 1]); } return ret; } diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 9fd5effec1..134bb0e006 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -702,12 +702,6 @@ dap_string_t* dap_cli_list_net() json_object* s_set_reply_text_node_status_json(dap_chain_net_t *a_net) { json_object *l_jobj_ret = json_object_new_object(); json_object *l_jobj_net_name = json_object_new_string(a_net->pub.name); - if (!l_jobj_ret || !l_jobj_net_name) { - json_object_put(l_jobj_ret); - json_object_put(l_jobj_net_name); - dap_json_rpc_allocation_error; - return NULL; - } json_object_object_add(l_jobj_ret, "net", l_jobj_net_name); dap_chain_node_addr_t l_cur_node_addr = { 0 }; l_cur_node_addr.uint64 = dap_chain_net_get_cur_addr_int(a_net); @@ -728,14 +722,6 @@ json_object* s_set_reply_text_node_status_json(dap_chain_net_t *a_net) { json_object *l_jobj_links = json_object_new_object(); json_object *l_jobj_active_links = json_object_new_uint64(dap_link_manager_links_count(a_net->pub.id.uint64)); json_object *l_jobj_required_links = json_object_new_uint64(dap_link_manager_required_links_count(a_net->pub.id.uint64)); - if (!l_jobj_links || !l_jobj_active_links || !l_jobj_required_links) { - json_object_put(l_jobj_ret); - json_object_put(l_jobj_links); - json_object_put(l_jobj_active_links); - json_object_put(l_jobj_required_links); - dap_json_rpc_allocation_error; - return NULL; - } json_object_object_add(l_jobj_links, "active", l_jobj_active_links); json_object_object_add(l_jobj_links, "required", l_jobj_required_links); json_object_object_add(l_jobj_ret, "links", l_jobj_links); @@ -891,10 +877,10 @@ static const char *s_chain_type_convert_to_string(dap_chain_type_t a_type) */ static int s_cli_net(int argc, char **argv, void **reply) { - json_object ** json_arr_reply = (json_object **) reply; + json_object ** a_json_arr_reply = (json_object **) reply; json_object *l_jobj_return = json_object_new_object(); if (!l_jobj_return) { - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } int arg_index = 1; @@ -906,7 +892,7 @@ static int s_cli_net(int argc, char **argv, void **reply) l_hash_out_type = "hex"; if(dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_INVALID_PARAMETER_HASH, "%s", "invalid parameter -H, valid values: -H <hex | base58>"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_INVALID_PARAMETER_HASH, "%s", "invalid parameter -H, valid values: -H <hex | base58>"); return DAP_CHAIN_NET_JSON_RPC_INVALID_PARAMETER_HASH; } @@ -920,14 +906,14 @@ static int s_cli_net(int argc, char **argv, void **reply) dap_chain_net_t* l_net = NULL; if (dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-net", &l_net_str) && !l_net_str) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_CAN_NOT_PARAMETER_NET_REQUIRE, "%s", "Parameter '-net' require <net name>"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_CAN_NOT_PARAMETER_NET_REQUIRE, "%s", "Parameter '-net' require <net name>"); return DAP_CHAIN_NET_JSON_RPC_CAN_NOT_PARAMETER_NET_REQUIRE; } l_net = dap_chain_net_by_name(l_net_str); if (l_net_str && !l_net) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_WRONG_NET, "%s", "Wrong <net name>, use 'net list' " + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_WRONG_NET, "%s", "Wrong <net name>, use 'net list' " "command to display a list of available networks"); return DAP_CHAIN_NET_JSON_RPC_WRONG_NET; } @@ -939,7 +925,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_return); json_object_put(l_jobj_net_name); json_object_put(l_jobj_chains); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } dap_chain_t * l_chain = l_net->pub.chains; @@ -950,7 +936,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_net_name); json_object_put(l_jobj_chains); json_object_put(l_jobj_chain_name); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_array_add(l_jobj_chains, l_jobj_chain_name); @@ -971,7 +957,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_network); json_object_put(l_jobj_chains); json_object_put(l_jobj_network_name); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_network, "name", l_jobj_network_name); @@ -986,7 +972,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_chains); json_object_put(l_jobj_chain); json_object_put(l_jobj_chain_name); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_chain, "name", l_jobj_chain_name); @@ -998,7 +984,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_chains); json_object_put(l_jobj_network); json_object_put(l_jobj_networks); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } for (uint16_t i = 0; i < l_chain->default_datum_types_count; i++) { @@ -1011,7 +997,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_chains); json_object_put(l_jobj_network); json_object_put(l_jobj_networks); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_array_add(l_jobj_default_types, l_jobj_type_str); @@ -1030,7 +1016,7 @@ static int s_cli_net(int argc, char **argv, void **reply) // plug for wrong command arguments if (argc > 2) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_MANY_ARGUMENT_FOR_COMMAND_NET_LIST, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_MANY_ARGUMENT_FOR_COMMAND_NET_LIST, "%s", "To many arguments for 'net list' command see help"); return DAP_CHAIN_NET_JSON_RPC_MANY_ARGUMENT_FOR_COMMAND_NET_LIST; } @@ -1048,7 +1034,7 @@ static int s_cli_net(int argc, char **argv, void **reply) return 0; } - int l_ret = dap_chain_node_cli_cmd_values_parse_net_chain_for_json(&arg_index, argc, argv, NULL, &l_net, + int l_ret = dap_chain_node_cli_cmd_values_parse_net_chain_for_json(a_json_arr_reply, &arg_index, argc, argv, NULL, &l_net, CHAIN_TYPE_INVALID); if ( l_net ) { @@ -1112,7 +1098,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_stats = json_object_new_object(); if (!l_jobj_stats) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object *l_jobj_from = json_object_new_string(l_from_str_new); @@ -1122,7 +1108,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_stats); json_object_put(l_jobj_from); json_object_put(l_jobj_to); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_stats, "from", l_jobj_from); @@ -1153,7 +1139,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_to); json_object_put(l_jobj_tpd); json_object_put(l_jobj_total); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } #ifdef DAP_TPS_TEST @@ -1165,7 +1151,7 @@ static int s_cli_net(int argc, char **argv, void **reply) l_ret = DAP_CHAIN_NET_JSON_RPC_OK; } else { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETER_COMMAND_STATS, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETER_COMMAND_STATS, "%s", "Subcommand 'stats' requires one of parameter: tx"); return DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETER_COMMAND_STATS; } @@ -1176,7 +1162,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_return); json_object_put(l_jobj_net); json_object_put(l_jobj_current_status); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "net", l_jobj_net); @@ -1185,7 +1171,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_to = json_object_new_string(c_net_states[NET_STATE_ONLINE]); if (!l_jobj_to) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "to", l_jobj_to); @@ -1195,7 +1181,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_to = json_object_new_string(c_net_states[NET_STATE_OFFLINE]); if (!l_jobj_to) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "to", l_jobj_to); @@ -1205,7 +1191,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_to = json_object_new_string("resynchronizing"); if (!l_jobj_to) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "start", l_jobj_to); @@ -1216,7 +1202,7 @@ static int s_cli_net(int argc, char **argv, void **reply) l_ret = DAP_CHAIN_NET_JSON_RPC_OK; } else { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETER_COMMAND_GO, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETER_COMMAND_GO, "%s", "Subcommand 'go' requires one of parameters: online, offline, sync\n"); return DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETER_COMMAND_GO; } @@ -1236,7 +1222,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_return); json_object_put(l_jobj_fees); json_object_put(l_jobj_network_name); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_fees, "network", l_jobj_network_name); @@ -1259,7 +1245,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_native_ticker); json_object_put(l_jobj_fee_addr); json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_network, "coins", l_jobj_fee_coins); @@ -1272,7 +1258,7 @@ static int s_cli_net(int argc, char **argv, void **reply) if (!l_jobj_validators) { json_object_put(l_jobj_fees); json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } //Get services fee @@ -1281,7 +1267,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_validators); json_object_put(l_jobj_fees); json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_fees, "validators", l_jobj_validators); @@ -1297,7 +1283,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_net_name); json_object_put(l_jobj_id); json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "network", l_jobj_net_name); @@ -1305,7 +1291,7 @@ static int s_cli_net(int argc, char **argv, void **reply) l_ret = DAP_CHAIN_NET_JSON_RPC_OK; } else { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_UNKNOWN_SUBCOMMANDS, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_UNKNOWN_SUBCOMMANDS, "Unknown \"%s\" subcommand, net get commands.", l_get_str); return DAP_CHAIN_NET_JSON_RPC_UNKNOWN_SUBCOMMANDS; } @@ -1314,14 +1300,14 @@ static int s_cli_net(int argc, char **argv, void **reply) dap_cluster_t *l_net_cluster = dap_cluster_by_mnemonim(l_net->pub.name); if (!l_net_cluster) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_CAN_NOT_GET_CLUSTER, "%s", "Failed to obtain a cluster for " + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_CAN_NOT_GET_CLUSTER, "%s", "Failed to obtain a cluster for " "the specified network."); return DAP_CHAIN_NET_JSON_RPC_CAN_NOT_GET_CLUSTER; } json_object *l_jobj_links = dap_cluster_get_links_info_json(l_net_cluster); if (!l_jobj_links) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "links", l_jobj_links); @@ -1330,7 +1316,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_not_implemented = json_object_new_string("Not implemented"); if (!l_jobj_not_implemented) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "add", l_jobj_not_implemented); @@ -1339,7 +1325,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_not_implemented = json_object_new_string("Not implemented"); if (!l_jobj_not_implemented) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "del", l_jobj_not_implemented); @@ -1348,7 +1334,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_not_implemented = json_object_new_string("Not implemented"); if (!l_jobj_not_implemented) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "info", l_jobj_not_implemented); @@ -1358,14 +1344,14 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_ret = json_object_new_string("Stopped network"); if (!l_jobj_ret) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "message", l_jobj_ret); l_ret = DAP_CHAIN_NET_JSON_RPC_OK; }else { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETERS_COMMAND_LINK, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETERS_COMMAND_LINK, "%s", "Subcommand 'link' requires one of parameters: list, add, del, info, disconnect_all"); return DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETERS_COMMAND_LINK; } @@ -1378,7 +1364,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_state_machine); json_object_put(l_jobj_current); json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } dap_chain_net_sync(l_net); @@ -1386,7 +1372,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_put(l_jobj_state_machine); json_object_put(l_jobj_current); json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_state_machine, "current", l_jobj_current); @@ -1402,7 +1388,7 @@ static int s_cli_net(int argc, char **argv, void **reply) if (!l_cert_string && !l_hash_string) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETERS_CA_ADD, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETERS_CA_ADD, "%s", "One of -cert or -hash parameters is mandatory"); return DAP_CHAIN_NET_JSON_RPC_UNDEFINED_PARAMETERS_CA_ADD; } @@ -1413,13 +1399,13 @@ static int s_cli_net(int argc, char **argv, void **reply) dap_cert_t * l_cert = dap_cert_find_by_name(l_cert_string); if (l_cert == NULL) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_CAN_NOT_FIND_CERT_CA_ADD, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_CAN_NOT_FIND_CERT_CA_ADD, "Can't find \"%s\" certificate", l_cert_string); return DAP_CHAIN_NET_JSON_RPC_CAN_NOT_FIND_CERT_CA_ADD; } if (l_cert->enc_key == NULL) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_CAN_NOT_KEY_IN_CERT_CA_ADD, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_CAN_NOT_KEY_IN_CERT_CA_ADD, "No key found in \"%s\" certificate", l_cert_string); return DAP_CHAIN_NET_JSON_RPC_CAN_NOT_KEY_IN_CERT_CA_ADD; } @@ -1428,7 +1414,7 @@ static int s_cli_net(int argc, char **argv, void **reply) uint8_t *l_pub_key = dap_enc_key_serialize_pub_key(l_cert->enc_key, &l_pub_key_size);; if (l_pub_key == NULL) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_CAN_SERIALIZE_PUBLIC_KEY_CERT_CA_ADD, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_CAN_SERIALIZE_PUBLIC_KEY_CERT_CA_ADD, "Can't serialize public key of certificate \"%s\"", l_cert_string); return DAP_CHAIN_NET_JSON_RPC_CAN_SERIALIZE_PUBLIC_KEY_CERT_CA_ADD; } @@ -1447,7 +1433,7 @@ static int s_cli_net(int argc, char **argv, void **reply) if (!l_gdb_group_str) { DAP_DELETE(l_hash_hex_str); json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_DATABASE_ACL_GROUP_NOT_DEFINED_FOR_THIS_NETWORK_CA_ADD, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_DATABASE_ACL_GROUP_NOT_DEFINED_FOR_THIS_NETWORK_CA_ADD, "%s", "Database ACL group not defined for this network"); return DAP_CHAIN_NET_JSON_RPC_DATABASE_ACL_GROUP_NOT_DEFINED_FOR_THIS_NETWORK_CA_ADD; } @@ -1456,7 +1442,7 @@ static int s_cli_net(int argc, char **argv, void **reply) DAP_DELETE(l_gdb_group_str); if (l_ret) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_CAN_NOT_SAVE_PUBLIC_KEY_IN_DATABASE, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_CAN_NOT_SAVE_PUBLIC_KEY_IN_DATABASE, "Can't save public key hash %s in database", l_hash_hex_str); DAP_DELETE(l_hash_hex_str); return DAP_CHAIN_NET_JSON_RPC_CAN_NOT_SAVE_PUBLIC_KEY_IN_DATABASE; @@ -1464,7 +1450,7 @@ static int s_cli_net(int argc, char **argv, void **reply) DAP_DELETE(l_hash_hex_str); } else{ json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_CAN_NOT_SAVE_PUBLIC_KEY_IN_DATABASE, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_CAN_NOT_SAVE_PUBLIC_KEY_IN_DATABASE, "%s", "Can't save NULL public key hash in database"); return DAP_CHAIN_NET_JSON_RPC_CAN_NOT_SAVE_PUBLIC_KEY_IN_DATABASE; } @@ -1472,7 +1458,7 @@ static int s_cli_net(int argc, char **argv, void **reply) } else if (strcmp(l_ca_str, "list") == 0 ) { char *l_gdb_group_str = dap_chain_net_get_gdb_group_acl(l_net); if (!l_gdb_group_str) { - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_DATABASE_ACL_GROUP_NOT_DEFINED_FOR_THIS_NETWORK_CA_LIST, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_DATABASE_ACL_GROUP_NOT_DEFINED_FOR_THIS_NETWORK_CA_LIST, "%s", "Database ACL group not defined for this network"); return DAP_CHAIN_NET_JSON_RPC_DATABASE_ACL_GROUP_NOT_DEFINED_FOR_THIS_NETWORK_CA_LIST; } @@ -1482,7 +1468,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_list_ca = json_object_new_array(); if (!l_jobj_list_ca) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } for (size_t i = 0; i < l_objs_count; i++) { @@ -1490,7 +1476,7 @@ static int s_cli_net(int argc, char **argv, void **reply) if (!l_jobj_key) { json_object_put(l_jobj_list_ca); json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } } @@ -1502,7 +1488,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_str_ret = json_object_new_string("No entries found"); if (!l_jobj_list_ca) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_return, "ca_list", l_jobj_str_ret); @@ -1512,13 +1498,13 @@ static int s_cli_net(int argc, char **argv, void **reply) const char *l_hash_string = NULL; dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-hash", &l_hash_string); if (!l_hash_string) { - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_UNKNOWN_HASH_CA_DEL, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_UNKNOWN_HASH_CA_DEL, "%s", "Format should be 'net ca del -hash <hash string>"); return DAP_CHAIN_NET_JSON_RPC_UNKNOWN_HASH_CA_DEL; } char *l_gdb_group_str = dap_chain_net_get_gdb_group_acl(l_net); if (!l_gdb_group_str) { - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_DATABASE_ACL_GROUP_NOT_DEFINED_FOR_THIS_NETWORK_CA_DEL, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_DATABASE_ACL_GROUP_NOT_DEFINED_FOR_THIS_NETWORK_CA_DEL, "%s", "Database ACL group not defined for this network"); return DAP_CHAIN_NET_JSON_RPC_DATABASE_ACL_GROUP_NOT_DEFINED_FOR_THIS_NETWORK_CA_DEL; } @@ -1527,14 +1513,14 @@ static int s_cli_net(int argc, char **argv, void **reply) DAP_DELETE(l_ret_msg_str); if (l_jobj_ret) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } l_ret = dap_global_db_del_sync(l_gdb_group_str, l_hash_string); DAP_DELETE(l_gdb_group_str); if (l_ret) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_CAN_NOT_FIND_CERT_CA_DEL, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_CAN_NOT_FIND_CERT_CA_DEL, "%s", "Can't find certificate public key hash in database"); return DAP_CHAIN_NET_JSON_RPC_CAN_NOT_FIND_CERT_CA_DEL; } @@ -1542,7 +1528,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_array_add(*reply, l_jobj_ret); return DAP_CHAIN_NET_JSON_RPC_OK; } else { - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_INVALID_PARAMETER_COMMAND_CA, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_INVALID_PARAMETER_COMMAND_CA, "%s", "Subcommand 'ca' requires one of parameter: add, list, del"); return DAP_CHAIN_NET_JSON_RPC_INVALID_PARAMETER_COMMAND_CA; } @@ -1555,14 +1541,14 @@ static int s_cli_net(int argc, char **argv, void **reply) } else if (l_list_str && !strcmp(l_list_str, "list")) { if (!l_net->pub.keys) { json_object_put(l_jobj_return); - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_NO_POA_CERTS_FOUND_POA_CERTS, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_NO_POA_CERTS_FOUND_POA_CERTS, "%s", "No PoA certs found for this network"); return DAP_CHAIN_NET_JSON_RPC_NO_POA_CERTS_FOUND_POA_CERTS; } json_object *l_jobj_pkeys = json_object_new_array(); if (!l_jobj_pkeys) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } for (dap_list_t *it = l_net->pub.keys; it; it = it->next) { @@ -1574,7 +1560,7 @@ static int s_cli_net(int argc, char **argv, void **reply) if (!l_jobj_hash_key) { json_object_put(l_jobj_pkeys); json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_array_add(l_jobj_pkeys, l_jobj_hash_key); @@ -1586,14 +1572,14 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object *l_jobj_info = json_object_new_string("empty"); if (!l_jobj_info) { json_object_put(l_jobj_return); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_pkeys, "poa_certs", l_jobj_info); } l_ret = DAP_CHAIN_NET_JSON_RPC_OK; } else { - dap_json_rpc_error_add(DAP_CHAIN_NET_JSON_RPC_UNKNOWN_SUBCOMMANDS, "%s", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NET_JSON_RPC_UNKNOWN_SUBCOMMANDS, "%s", "Command 'net' requires one of subcomands: sync, link, go, get, stats, ca, ledger"); l_ret = DAP_CHAIN_NET_JSON_RPC_UNKNOWN_SUBCOMMANDS; } @@ -1602,7 +1588,7 @@ static int s_cli_net(int argc, char **argv, void **reply) l_jobj_return = NULL; } if (l_jobj_return) { - json_object_array_add(*json_arr_reply, l_jobj_return); + json_object_array_add(*a_json_arr_reply, l_jobj_return); } return l_ret; } diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index e8b1aa3c31..0185486c3a 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -396,7 +396,7 @@ static int s_node_info_list_with_reply(dap_chain_net_t *a_net, dap_chain_node_ad */ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) { - json_object **json_arr_reply = (json_object **)a_str_reply; + json_object **a_json_arr_reply = (json_object **)a_str_reply; enum { CMD_NONE, CMD_NAME_CELL, CMD_ADD, CMD_FLUSH, CMD_RECORD, CMD_WRITE, CMD_READ, CMD_DELETE, CMD_DROP, CMD_GET_KEYS, CMD_GROUP_LIST @@ -428,13 +428,13 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) { if(!arg_index || a_argc < 3) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "parameters are not valid"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "parameters are not valid"); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } dap_chain_t * l_chain = NULL; dap_chain_net_t * l_net = NULL; - if (dap_chain_node_cli_cmd_values_parse_net_chain_for_json(&arg_index, a_argc, a_argv, &l_chain, &l_net, CHAIN_TYPE_INVALID) < 0) + if (dap_chain_node_cli_cmd_values_parse_net_chain_for_json(a_json_arr_reply, &arg_index, a_argc, a_argv, &l_chain, &l_net, CHAIN_TYPE_INVALID) < 0) return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; const char *l_cell_str = NULL, *l_chain_str = NULL; @@ -460,7 +460,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) // add new node to global_db case CMD_ADD: if(!arg_index || a_argc < 7) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "invalid parameters"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "invalid parameters"); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } dap_chain_cell_t *l_cell = dap_chain_cell_create_fill(l_chain, l_cell_id); @@ -469,17 +469,17 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) { json_object* json_obj_name = json_object_new_object(); json_object_object_add(json_obj_name, "comand status", json_object_new_string("cell added successfully")); - json_object_array_add(*json_arr_reply, json_obj_name); + json_object_array_add(*a_json_arr_reply, json_obj_name); } else - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_CAN_CREATE_CELL_ERR, "can't create file for cell 0x%016"DAP_UINT64_FORMAT_X" ( %s )", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_CAN_CREATE_CELL_ERR, "can't create file for cell 0x%016"DAP_UINT64_FORMAT_X" ( %s )", l_cell->id.uint64,l_cell->file_storage_path); dap_chain_cell_close(l_cell); return l_ret; //case CMD_NONE: default: - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_COMMAND_ERR, "command %s not recognized", a_argv[1]); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_COMMAND_ERR, "command %s not recognized", a_argv[1]); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_COMMAND_ERR; } } @@ -492,25 +492,25 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) case 0: json_obj_flush = json_object_new_object(); json_object_object_add(json_obj_flush, "command status", json_object_new_string("Commit data base and filesystem caches to disk completed.\n\n")); - json_object_array_add(*json_arr_reply, json_obj_flush); + json_object_array_add(*a_json_arr_reply, json_obj_flush); break; case -1: - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_CAN_NOT_OPEN_DIR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_CAN_NOT_OPEN_DIR, "Couldn't open db directory. Can't init cdb\n" "Reboot the node.\n\n"); break; case -2: - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_CAN_NOT_INIT_DB, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_CAN_NOT_INIT_DB, "Couldn't open db directory. Can't init cdb\n" "Reboot the node.\n\n"); break; case -3: - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_CAN_NOT_INIT_SQL, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_CAN_NOT_INIT_SQL, "Can't init sqlite\n" "Reboot the node.\n\n"); break; default: - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_CAN_NOT_COMMIT_TO_DISK, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_CAN_NOT_COMMIT_TO_DISK, "Can't commit data base caches to disk completed.\n" "Reboot the node.\n\n"); break; @@ -523,7 +523,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) SUMCMD_GET, SUMCMD_PIN, SUMCMD_UNPIN }; if(!arg_index || a_argc < 3) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR,"parameters are not valid"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR,"parameters are not valid"); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } int arg_index_n = ++arg_index; @@ -541,7 +541,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) l_subcmd = SUMCMD_UNPIN; } else{ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "Subcommand '%s' not recognized, available subcommands are 'get', 'pin' or 'unpin'", a_argv[2]); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } @@ -556,7 +556,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) dap_nanotime_t l_ts =0; uint8_t *l_value = dap_global_db_get_sync(l_group, l_key, &l_value_len, &l_is_pinned, &l_ts); if(!l_value || !l_value_len) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_FOUND, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_FOUND, "Record not found\n\n"); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_FOUND; } @@ -596,7 +596,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) json_object_object_add(json_obj_rec, "pinned status", json_object_new_string("record successfully pinned")); } else{ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_PINED, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_PINED, "can't pin the record"); l_ret = -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_PINED; } @@ -612,14 +612,14 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) json_object_object_add(json_obj_rec, "unpinned status", json_object_new_string("record successfully unpinned")); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_UNPINED, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_UNPINED, "can't unpin the record"); l_ret = -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_UNPINED; } break; } } - json_object_array_add(*json_arr_reply, json_obj_rec); + json_object_array_add(*a_json_arr_reply, json_obj_rec); DAP_DELETE(l_value); return l_ret; } @@ -634,21 +634,21 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-value", &l_value_str); if (!l_group_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "%s requires parameter 'group' to be valid", a_argv[0]); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } if (!l_key_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "%s requires parameter 'key' to be valid", a_argv[0]); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } if (!l_value_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "%s requires parameter 'value' to be valid", a_argv[0]); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; @@ -657,10 +657,10 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) if (!dap_global_db_set_sync(l_group_str, l_key_str, l_value_str, strlen(l_value_str) +1 , false)) { json_object* json_obj_write = json_object_new_object(); json_object_object_add(json_obj_write, "write status", json_object_new_string("Data has been successfully written to the database")); - json_object_array_add(*json_arr_reply, json_obj_write); + json_object_array_add(*a_json_arr_reply, json_obj_write); return DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_JSON_OK; } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_WRITING_FILED, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_WRITING_FILED, "Data writing is failed"); } } @@ -673,13 +673,13 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-key", &l_key_str); if(!l_group_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "%s requires parameter 'group' to be valid", a_argv[0]); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } if(!l_key_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "%s requires parameter 'key' to be valid", a_argv[0]); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } @@ -703,16 +703,16 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) json_object_object_add(json_obj_read, "time", json_object_new_string(l_ts_str)); json_object_object_add(json_obj_read, "value len", json_object_new_uint64(l_out_len)); json_object_object_add(json_obj_read, "value hex", json_object_new_string(l_value_hexdump)); - json_object_array_add(*json_arr_reply, json_obj_read); + json_object_array_add(*a_json_arr_reply, json_obj_read); DAP_DELETE(l_value_hexdump); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_TIME_NO_VALUE, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_TIME_NO_VALUE, "\n\"%s : %s\"\nTime: %s\nNo value\n", l_group_str, l_key_str, l_ts_str); } DAP_DELETE(l_value_out); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_FOUND, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_RECORD_NOT_FOUND, "\nRecord \"%s : %s\" not found\n", l_group_str, l_key_str); } @@ -727,13 +727,13 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-key", &l_key_str); if(!l_group_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR, "%s requires parameter 'group' to be valid", a_argv[0]); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } if(!l_key_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_NO_KEY_PROVIDED, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_NO_KEY_PROVIDED, "No key provided, entire table %s will be altered", l_group_str); size_t l_objs_count = 0; @@ -741,7 +741,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) if (!l_obj || !l_objs_count) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_NO_DATA_IN_GROUP, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_NO_DATA_IN_GROUP, "No data in group %s.", l_group_str); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_NO_DATA_IN_GROUP; } @@ -758,7 +758,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) json_object_object_add(json_obj_del, "Removed records", json_object_new_uint64(j)); json_object_object_add(json_obj_del, "of records", json_object_new_uint64(i)); json_object_object_add(json_obj_del, "in table", json_object_new_string(l_group_str)); - json_object_array_add(*json_arr_reply, json_obj_del); + json_object_array_add(*a_json_arr_reply, json_obj_del); return DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_JSON_OK; } @@ -767,10 +767,10 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) json_object_object_add(json_obj_del, "Record key", json_object_new_string(l_key_str)); json_object_object_add(json_obj_del, "Group name", json_object_new_string(l_group_str)); json_object_object_add(json_obj_del, "status", json_object_new_string("deleted")); - json_object_array_add(*json_arr_reply, json_obj_del); + json_object_array_add(*a_json_arr_reply, json_obj_del); return DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_JSON_OK; } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_DELETE_FAILD, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_DELETE_FAILD, "Record with key %s in group %s deleting failed", l_group_str, l_key_str); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_DELETE_FAILD; } @@ -781,7 +781,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-group", &l_group_str); if(!l_group_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR,"%s requires parameter 'group' to be valid", a_argv[0]); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR,"%s requires parameter 'group' to be valid", a_argv[0]); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } @@ -789,10 +789,10 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) { json_object* json_obj_drop = json_object_new_object(); json_object_object_add(json_obj_drop, "Dropped table", json_object_new_string(l_group_str)); - json_object_array_add(*json_arr_reply, json_obj_drop); + json_object_array_add(*a_json_arr_reply, json_obj_drop); return DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_JSON_OK; } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_DROP_FAILED,"Failed to drop table %s", l_group_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_DROP_FAILED,"Failed to drop table %s", l_group_str); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_DROP_FAILED; } } @@ -802,7 +802,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-group", &l_group_str); if(!l_group_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR,"%s requires parameter 'group' to be valid", a_argv[0]); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR,"%s requires parameter 'group' to be valid", a_argv[0]); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } @@ -811,7 +811,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) if (!l_objs || !l_objs_count) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_NO_DATA_IN_GROUP,"No data in group %s.", l_group_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_NO_DATA_IN_GROUP,"No data in group %s.", l_group_str); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_NO_DATA_IN_GROUP; } @@ -832,7 +832,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) json_object* json_keys_list = json_object_new_object(); json_object_object_add(json_keys_list, "group name", json_object_new_string(l_group_str)); json_object_object_add(json_keys_list, "keys list", json_arr_keys); - json_object_array_add(*json_arr_reply, json_keys_list); + json_object_array_add(*a_json_arr_reply, json_keys_list); return DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_JSON_OK; } case CMD_GROUP_LIST: { @@ -849,12 +849,12 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) } json_object_object_add(json_group_list, "group list", json_arr_group); json_object_object_add(json_group_list, "total count", json_object_new_uint64(l_count)); - json_object_array_add(*json_arr_reply, json_group_list); + json_object_array_add(*a_json_arr_reply, json_group_list); dap_list_free(l_group_list); return DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_JSON_OK; } default: - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR,"parameters are not valid"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR,"parameters are not valid"); return -DAP_CHAIN_NODE_CLI_COM_GLOBAL_DB_PARAM_ERR; } } @@ -1811,9 +1811,9 @@ int com_help(int a_argc, char **a_argv, void **a_str_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) { -json_object ** json_arr_reply = (json_object **) reply; +json_object ** a_json_arr_reply = (json_object **) a_str_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; @@ -1835,7 +1835,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; l_arg_index++; if(cmd_num == CMD_NONE) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PARAM_ERR, "Format of command: wallet {new -w <wallet_name> | list | info [-addr <addr>]|[-w <wallet_name> -net <net_name>]}"); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PARAM_ERR; } @@ -1852,7 +1852,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; // Check if wallet name has only digits and English letter if (l_wallet_name && !dap_isstralnum(l_wallet_name)){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NAME_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NAME_ERR, "Wallet name must contains digits and aplhabetical symbols"); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NAME_ERR; } @@ -1862,7 +1862,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; dap_chain_addr_t *l_addr = NULL; if(l_net_name && !l_net) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NET_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NET_PARAM_ERR, "Not found net by name '%s'", l_net_name); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NET_PARAM_ERR; } @@ -1932,14 +1932,14 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; case CMD_WALLET_INFO: { dap_ledger_t *l_ledger = NULL; if ((l_wallet_name && l_addr_str) || (!l_wallet_name && !l_addr_str)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NAME_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NAME_ERR, "You should use either the -w or -addr option for the wallet info command."); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NAME_ERR; } if(l_wallet_name) { if(!l_net) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NET_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NET_PARAM_ERR, "Subcommand info requires parameter '-net'"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NET_PARAM_ERR; @@ -1953,7 +1953,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; if (!l_addr){ if(l_wallet) dap_chain_wallet_close(l_wallet); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_FOUND_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_FOUND_ERR, "Wallet not found"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_FOUND_ERR; @@ -1963,7 +1963,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; l_ledger = l_net->pub.ledger; l_net_name = l_net->pub.name; } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NET_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NET_ERR, "Can't find network id 0x%016"DAP_UINT64_FORMAT_X" from address %s", l_addr->net_id.uint64, l_addr_str); json_object_put(json_arr_out); @@ -2045,19 +2045,19 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; } default: { if( !l_wallet_name ) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NAME_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NAME_ERR, "Wallet name option <-w> not defined"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_NAME_ERR; } if( cmd_num != CMD_WALLET_DEACTIVATE && !l_pass_str && cmd_num != CMD_WALLET_NEW) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PASS_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PASS_ERR, "Wallet password option <-password> not defined"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PASS_ERR; } if ( cmd_num != CMD_WALLET_DEACTIVATE && l_pass_str && DAP_WALLET$SZ_PASS < strnlen(l_pass_str, DAP_WALLET$SZ_PASS + 1) ) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PASS_TO_LONG_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PASS_TO_LONG_ERR, "Wallet's password is too long ( > %d)", DAP_WALLET$SZ_PASS); log_it(L_ERROR, "Wallet's password is too long ( > %d)", DAP_WALLET$SZ_PASS); json_object_put(json_arr_out); @@ -2082,17 +2082,17 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; json_object_new_string("is activated") : json_object_new_string("is deactivated")); break; case -EBUSY: - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_ALREADY_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_ALREADY_ERR, "Error: wallet %s is already %sactivated\n", l_wallet_name, l_prefix); break; case -EAGAIN: - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PASS_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PASS_ERR, "Error: wrong password for wallet %s\n", l_wallet_name); break; default: { char l_buf[512] = { '\0' }; strerror_r(l_rc, l_buf, sizeof(l_buf) - 1); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_ACTIVE_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_ACTIVE_ERR, "Wallet %s %sactivation error %d : %s\n", l_wallet_name, l_prefix, l_rc, l_buf); break; } @@ -2103,12 +2103,12 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; case CMD_WALLET_CONVERT: { l_wallet = dap_chain_wallet_open(l_wallet_name, c_wallets_path, NULL); if (!l_wallet) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PASS_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PASS_ERR, "wrong password"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PASS_ERR; } else if (l_wallet->flags & DAP_WALLET$M_FL_ACTIVE) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_CONVERT_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_CONVERT_ERR, "Wallet can't be converted twice"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_CONVERT_ERR; @@ -2117,7 +2117,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; dap_chain_wallet_internal_t* l_file_name = DAP_CHAIN_WALLET_INTERNAL(l_wallet); snprintf(l_file_name->file_name, sizeof(l_file_name->file_name) - 1, "%s/%s_%012lu%s", c_wallets_path, l_wallet_name, time(NULL),".backup"); if ( dap_chain_wallet_save(l_wallet, NULL) ) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_BACKUP_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_BACKUP_ERR, "Can't create backup wallet file because of internal error"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_BACKUP_ERR; @@ -2125,7 +2125,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; // change to old filename snprintf(l_file_name->file_name, sizeof(l_file_name->file_name) - 1, "%s/%s%s", c_wallets_path, l_wallet_name, ".dwallet"); if ( dap_chain_wallet_save(l_wallet, l_pass_str) ) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_CONVERT_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_CONVERT_ERR, "Wallet is not converted because of internal error"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_CONVERT_ERR; @@ -2156,7 +2156,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; FILE *l_exists = fopen(l_file_name, "rb"); DAP_DELETE(l_file_name); if (l_exists) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_ALREADY_ERR,"Wallet %s already exists",l_wallet_name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_ALREADY_ERR,"Wallet %s already exists",l_wallet_name); fclose(l_exists); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_ALREADY_ERR; @@ -2172,7 +2172,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; } else { l_sign_types[0] = dap_sign_type_from_str(l_sign_type_str); if (l_sign_types[0].type == SIG_TYPE_NULL){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_UNKNOWN_SIGN_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_UNKNOWN_SIGN_ERR, "'%s' unknown signature type, please use:\n%s", l_sign_type_str, dap_sign_get_str_recommended_types()); json_object_put(json_arr_out); @@ -2190,7 +2190,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; l_sign_count++; } if (l_sign_count < 2) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_UNKNOWN_SIGN_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_UNKNOWN_SIGN_ERR, "You did not specify an additional signature after " "sig_multi_chained. You must specify at least two more " "signatures other than sig_multi_chained.\n" @@ -2208,11 +2208,11 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; for (size_t i = 0; i < l_sign_count; ++i) { if (dap_sign_type_is_depricated(l_sign_types[i])) { if (l_restore_opt || l_restore_legacy_opt) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_UNKNOWN_SIGN_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_UNKNOWN_SIGN_ERR, "CAUTION!!! CAUTION!!! CAUTION!!!\nThe Bliss, Tesla and Picnic signatures are deprecated. We recommend you to create a new wallet with another available signature and transfer funds there.\n"); break; } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_UNKNOWN_SIGN_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_UNKNOWN_SIGN_ERR, "This signature algorithm is no longer supported, please, use another variant"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_UNKNOWN_SIGN_ERR; @@ -2234,11 +2234,11 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; } dap_hex2bin(l_seed, l_restore_str + 2, l_restore_str_size - 2); if (l_restore_legacy_opt) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PROTECTION_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_PROTECTION_ERR, "CAUTION!!! CAUTION!!! CAUTION!!!\nYour wallet has a low level of protection. Please create a new wallet again with the option -restore\n"); } } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_HASH_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_HASH_ERR, "Restored hash is invalid or too short, wallet is not created. Please use -restore 0x<hex_value> or -restore_legacy 0x<restore_string>"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_HASH_ERR; @@ -2250,7 +2250,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; l_seed, l_seed_size, l_pass_str); DAP_DELETE(l_seed); if (!l_wallet) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_WALLET_INTERNAL_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_WALLET_INTERNAL_ERR, "Wallet is not created because of internal error. Check name or password length (max 64 chars)"); json_object_put(json_arr_out); return DAP_CHAIN_NODE_CLI_COM_TX_WALLET_INTERNAL_ERR; @@ -2284,9 +2284,9 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; } if (json_arr_out) { - json_object_array_add(*json_arr_reply, json_arr_out); + json_object_array_add(*a_json_arr_reply, json_arr_out); } else { - json_object_array_add(*json_arr_reply, json_object_new_string("empty")); + json_object_array_add(*a_json_arr_reply, json_object_new_string("empty")); } return 0; } @@ -2303,7 +2303,7 @@ typedef enum dap_chain_node_cli_cmd_values_parse_net_chain_err_to_json { DAP_CHAIN_NODE_CLI_CMD_VALUE_PARSE_FAST_AND_BASE58_ADDR, DAP_CHAIN_NODE_CLI_CMD_VALUE_PARSE_CAN_NOT_FIND_DEFAULT_CHAIN_WITH_TYPE } dap_chain_node_cli_cmd_values_parse_net_chain_err_to_json; -int dap_chain_node_cli_cmd_values_parse_net_chain_for_json(int *a_arg_index, int a_argc, +int dap_chain_node_cli_cmd_values_parse_net_chain_for_json(json_object* a_json_arr_reply, int *a_arg_index, int a_argc, char **a_argv, dap_chain_t **a_chain, dap_chain_net_t **a_net, dap_chain_type_t a_default_chain_type) { @@ -2314,14 +2314,14 @@ int dap_chain_node_cli_cmd_values_parse_net_chain_for_json(int *a_arg_index, int if(a_net) dap_cli_server_cmd_find_option_val(a_argv, *a_arg_index, a_argc, "-net", &l_net_str); else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_INTERNAL_COMMAND_PROCESSING, + dap_json_rpc_error_add(a_json_arr_reply, DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_INTERNAL_COMMAND_PROCESSING, "Error in internal command processing."); return DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_INTERNAL_COMMAND_PROCESSING; } // Select network if(!l_net_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_NET_STR_IS_NUL, "%s requires parameter '-net'", a_argv[0]); + dap_json_rpc_error_add(a_json_arr_reply, DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_NET_STR_IS_NUL, "%s requires parameter '-net'", a_argv[0]); return DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_NET_STR_IS_NUL; } @@ -2332,7 +2332,7 @@ int dap_chain_node_cli_cmd_values_parse_net_chain_for_json(int *a_arg_index, int l_str_to_reply = dap_strcat2(l_str_to_reply,l_str_to_reply_chain); dap_string_t* l_net_str = dap_cli_list_net(); l_str_to_reply = dap_strcat2(l_str_to_reply,l_net_str->str); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_NET_NOT_FOUND, "%s", l_str_to_reply); + dap_json_rpc_error_add(a_json_arr_reply, DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_NET_NOT_FOUND, "%s", l_str_to_reply); DAP_DELETE(l_str_to_reply); dap_string_free(l_net_str, true); return DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_NET_NOT_FOUND; @@ -2358,14 +2358,14 @@ int dap_chain_node_cli_cmd_values_parse_net_chain_for_json(int *a_arg_index, int l_str_to_reply = dap_strcat2(l_str_to_reply,l_chain->name); l_str_to_reply = dap_strcat2(l_str_to_reply,"\n"); } - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_CHAIN_NOT_FOUND, l_str_to_reply); + dap_json_rpc_error_add(a_json_arr_reply, DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_CHAIN_NOT_FOUND, l_str_to_reply); return DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_CHAIN_NOT_FOUND; } } else if (a_default_chain_type != CHAIN_TYPE_INVALID) { if ((*a_chain = dap_chain_net_get_default_chain_by_chain_type(*a_net, a_default_chain_type)) != NULL) { return 0; } else { - dap_json_rpc_error_add( + dap_json_rpc_error_add(a_json_arr_reply, DAP_CHAIN_NODE_CLI_CMD_VALUE_PARSE_CAN_NOT_FIND_DEFAULT_CHAIN_WITH_TYPE, "Unable to get the default chain of type %s for the network.", dap_chain_type_to_str(a_default_chain_type)); return DAP_CHAIN_NODE_CLI_CMD_VALUE_PARSE_CAN_NOT_FIND_DEFAULT_CHAIN_WITH_TYPE; @@ -2689,16 +2689,16 @@ int com_token_decl_sign(int a_argc, char **a_argv, void **a_str_reply) * @param a_str_tmp * @param a_hash_out_type */ -void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a_chain, const char * a_add, +void s_com_mempool_list_print_for_chain(json_object* a_json_arr_reply, dap_chain_net_t * a_net, dap_chain_t * a_chain, const char * a_add, json_object *a_json_obj, const char *a_hash_out_type, bool a_fast, size_t a_limit, size_t a_offset) { dap_chain_addr_t *l_wallet_addr = dap_chain_addr_from_str(a_add); if (a_add && !l_wallet_addr) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_CMD_VALUE_PARSE_CONVERT_BASE58_TO_ADDR_WALLET, "Cannot convert " + dap_json_rpc_error_add(a_json_arr_reply, DAP_CHAIN_NODE_CLI_CMD_VALUE_PARSE_CONVERT_BASE58_TO_ADDR_WALLET, "Cannot convert " "string '%s' to binary address.\n", a_add); return; } if (l_wallet_addr && a_fast) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_CMD_VALUE_PARSE_FAST_AND_BASE58_ADDR, + dap_json_rpc_error_add(a_json_arr_reply, DAP_CHAIN_NODE_CLI_CMD_VALUE_PARSE_FAST_AND_BASE58_ADDR, "In fast mode, it is impossible to count the number of transactions and emissions " "for a specific address. The -brief and -addr options are mutually exclusive.\n"); DAP_DELETE(l_wallet_addr); @@ -2706,7 +2706,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a } char * l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool_new(a_chain); if(!l_gdb_group_mempool){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_MEMPOOL_LIST_CAN_NOT_GET_MEMPOOL_GROUP, + dap_json_rpc_error_add(a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_MEMPOOL_LIST_CAN_NOT_GET_MEMPOOL_GROUP, "%s.%s: chain not found\n", a_net->pub.name, a_chain->name); return; } @@ -2715,7 +2715,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object *l_obj_chain_name = json_object_new_string(a_chain->name); if (!l_obj_chain_name || !l_obj_chain) { json_object_put(l_obj_chain); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } json_object_object_add(l_obj_chain, "name", l_obj_chain_name); @@ -2723,7 +2723,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object *l_jobj_removed = json_object_new_int(l_removed); if (!l_jobj_removed) { json_object_put(l_obj_chain); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } json_object_object_add(l_obj_chain, "removed", l_jobj_removed); @@ -2737,7 +2737,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a l_jobj_datums = json_object_new_array(); if (!l_jobj_datums) { json_object_put(l_obj_chain); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } @@ -2786,7 +2786,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_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } json_object_object_add(l_jobj_ts_created, "time_stamp", l_jobj_ts_created_time_stamp); @@ -2801,7 +2801,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_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } if (!dap_hash_fast_compare(&l_datum_real_hash, &l_datum_hash_from_key)) { @@ -2817,7 +2817,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object_put(l_jobj_hash); json_object_put(l_jobj_ts_created); json_object_put(l_jobj_datums); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } json_object *l_jobj_warning = json_object_new_string(l_wgn); @@ -2830,7 +2830,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object_put(l_jobj_hash); json_object_put(l_jobj_ts_created); json_object_put(l_jobj_datums); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } json_object_object_add(l_jobj_datum, "warning", l_jobj_warning); @@ -2861,7 +2861,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_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } @@ -2906,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_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return; } for (dap_list_t *it = l_list_in_reward; it; it = it->next) { @@ -2921,7 +2921,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_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return; } json_object_array_add(l_obj_in_reward_arary, l_jobj_block_hash); @@ -2935,7 +2935,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_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } json_object_object_add(l_jobj_datum, "from", l_jobj_addr_from); @@ -2967,7 +2967,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_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } enum { @@ -3045,7 +3045,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_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } const char *l_value_coins_str, *l_value_str = dap_uint256_to_char(l_value, &l_value_coins_str); @@ -3063,7 +3063,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_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } json_object_object_add(l_jobj_money, "token", l_jobj_token); @@ -3084,7 +3084,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_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } json_object_object_add(l_jobj_f, "money", l_jobj_money); @@ -3110,7 +3110,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object_put(l_obj_chain); json_object_put(l_jobj_f); dap_global_db_objs_delete(l_objs, l_objs_count); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } json_object_object_add(l_jobj_f, "token_emission_hash", l_obj_ems_hash); @@ -3194,11 +3194,11 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a if (l_wallet_addr && l_emi && dap_chain_addr_compare(l_wallet_addr, &l_emi->hdr.address)) datum_is_accepted_addr = true; DAP_DELETE(l_emi); - dap_chain_datum_dump_json(l_jobj_datum,l_datum,a_hash_out_type,a_net->pub.id); + dap_chain_datum_dump_json(a_json_arr_reply, l_jobj_datum,l_datum,a_hash_out_type,a_net->pub.id); } break; default: - dap_chain_datum_dump_json(l_jobj_datum,l_datum,a_hash_out_type,a_net->pub.id); + dap_chain_datum_dump_json(a_json_arr_reply, l_jobj_datum,l_datum,a_hash_out_type,a_net->pub.id); } } if (l_wallet_addr) { @@ -3221,7 +3221,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a json_object * l_object_total = json_object_new_string(l_net_chain_count_total); if (!l_object_total) { json_object_put(l_obj_chain); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); return; } json_object_object_add(l_obj_chain, "total", l_object_total); @@ -3230,7 +3230,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a DAP_DELETE(l_gdb_group_mempool); } -static int mempool_delete_for_chain(dap_chain_t *a_chain, const char * a_datum_hash_str, json_object **a_json_reply) { +static int mempool_delete_for_chain(dap_chain_t *a_chain, const char * a_datum_hash_str, json_object **a_json_arr_reply) { char * l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool_new(a_chain); uint8_t *l_data_tmp = dap_global_db_get_sync(l_gdb_group_mempool, a_datum_hash_str, NULL, NULL, NULL); @@ -3263,9 +3263,9 @@ typedef enum cmd_mempool_delete_err_list{ */ 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 **)a_str_reply; + json_object **a_json_arr_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"); + dap_json_rpc_error_add(*a_json_arr_reply, 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; } int res = 0; @@ -3276,14 +3276,14 @@ int _cmd_mempool_delete(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char if (!a_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); + res = mempool_delete_for_chain(l_chain, a_datum_hash, a_json_arr_reply); 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); + res = mempool_delete_for_chain(a_chain, a_datum_hash, a_json_arr_reply); l_jobj_chain = json_object_new_string(a_chain->name); } json_object_object_add(l_jobj_ret, "net", l_jobj_net); @@ -3301,7 +3301,7 @@ int _cmd_mempool_delete(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char 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); + json_object_array_add(*a_json_arr_reply, l_jobj_ret); if (res) { return COM_MEMPOOL_DELETE_ERR_DATUM_NOT_FOUND; } @@ -3344,10 +3344,10 @@ typedef enum cmd_mempool_check_err_list { */ 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; + json_object **a_json_arr_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> " + dap_json_rpc_error_add(*a_json_arr_reply, COM_MEMPOOL_CHECK_ERR_CAN_NOT_FIND_NET, "Error! Both -net <network_name> " "and -datum <data_hash> parameters are required."); return COM_MEMPOOL_CHECK_ERR_CAN_NOT_FIND_NET; } @@ -3372,7 +3372,7 @@ int _cmd_mempool_check(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char l_found_in_chains = true; dap_hash_fast_t l_datum_hash; if (dap_chain_hash_fast_from_hex_str(a_datum_hash, &l_datum_hash)) { - dap_json_rpc_error_add(COM_MEMPOOL_CHECK_ERR_INCORRECT_HASH_STR, + dap_json_rpc_error_add(*a_json_arr_reply, COM_MEMPOOL_CHECK_ERR_INCORRECT_HASH_STR, "Incorrect hash string %s", a_datum_hash); return COM_MEMPOOL_CHECK_ERR_INCORRECT_HASH_STR; } @@ -3396,7 +3396,7 @@ int _cmd_mempool_check(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char json_object_put(l_jobj_datum); json_object_put(l_datum_hash); json_object_put(l_net_obj); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object *l_chain_obj; @@ -3406,7 +3406,7 @@ int _cmd_mempool_check(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char json_object_put(l_jobj_datum); json_object_put(l_datum_hash); json_object_put(l_net_obj); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } } else @@ -3422,7 +3422,7 @@ int _cmd_mempool_check(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char json_object_put(l_find_chain_or_mempool); json_object_put(l_find_bool); json_object_put(l_jobj_datum); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_datum, "find", l_find_bool); @@ -3438,7 +3438,7 @@ int _cmd_mempool_check(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char json_object_put(l_obj_atom); json_object_put(l_jobj_atom_hash); json_object_put(l_jobj_atom_err); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_obj_atom, "hash", l_jobj_atom_hash); @@ -3447,29 +3447,29 @@ int _cmd_mempool_check(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char } json_object *l_datum_obj_inf = json_object_new_object(); - dap_chain_datum_dump_json(l_datum_obj_inf, l_datum, a_hash_out_type, a_net->pub.id); + dap_chain_datum_dump_json(a_json_arr_reply, l_datum_obj_inf, l_datum, a_hash_out_type, a_net->pub.id); if (!l_datum_obj_inf) { if (!l_found_in_chains) DAP_DELETE(l_datum); json_object_put(l_jobj_datum); - dap_json_rpc_error_add(DAP_JSON_RPC_ERR_CODE_SERIALIZATION_DATUM_TO_JSON, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_JSON_RPC_ERR_CODE_SERIALIZATION_DATUM_TO_JSON, "Failed to serialize datum to JSON."); return DAP_JSON_RPC_ERR_CODE_SERIALIZATION_DATUM_TO_JSON; } json_object_object_add(l_jobj_datum, "datum", l_datum_obj_inf); if (!l_found_in_chains) DAP_DELETE(l_datum); - json_object_array_add(*a_json_reply, l_jobj_datum); + json_object_array_add(*a_json_arr_reply, l_jobj_datum); return 0; } else { l_find_bool = json_object_new_boolean(FALSE); if (!l_find_bool) { json_object_put(l_jobj_datum); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_datum, "find", l_find_bool); - json_object_array_add(*a_json_reply, l_jobj_datum); + json_object_array_add(*a_json_arr_reply, l_jobj_datum); return COM_MEMPOOL_CHECK_ERR_DATUM_NOT_FIND; } } @@ -3498,10 +3498,10 @@ typedef enum cmd_mempool_proc_list_error{ */ 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; + json_object **a_json_arr_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, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_COM_MEMPOOL_PROC_LIST_ERROR_NODE_ROLE_NOT_FULL, "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; } @@ -3510,7 +3510,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * int ret = 0; 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, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_GROUP_NAME, "Failed to get mempool group name on network %s", a_net->pub.name); return DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_GROUP_NAME; } @@ -3520,20 +3520,20 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * &l_datum_size, NULL, NULL ); size_t l_datum_size2 = l_datum? dap_chain_datum_size( l_datum): 0; if (l_datum_size != l_datum_size2) { - dap_json_rpc_error_add(DAP_COM_MEMPOOL_PROC_LIST_ERROR_DATUM_CORRUPT_SIZE_DATUM_NOT_EQUALS_SIZE_RECORD, "Error! Corrupted datum %s, size by datum headers is %zd when in mempool is only %zd bytes", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_COM_MEMPOOL_PROC_LIST_ERROR_DATUM_CORRUPT_SIZE_DATUM_NOT_EQUALS_SIZE_RECORD, "Error! Corrupted datum %s, size by datum headers is %zd when in mempool is only %zd bytes", a_datum_hash, l_datum_size2, l_datum_size); DAP_DELETE(l_gdb_group_mempool); return DAP_COM_MEMPOOL_PROC_LIST_ERROR_DATUM_CORRUPT_SIZE_DATUM_NOT_EQUALS_SIZE_RECORD; } if (!l_datum) { - dap_json_rpc_error_add(DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_FIND_DATUM, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_FIND_DATUM, "Error! Can't find datum %s", a_datum_hash); DAP_DELETE(l_gdb_group_mempool); return DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_FIND_DATUM; } dap_hash_fast_t l_datum_hash, l_real_hash; if (dap_chain_hash_fast_from_hex_str(a_datum_hash, &l_datum_hash)) { - dap_json_rpc_error_add(DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_CONVERT_DATUM_HASH_TO_DIGITAL_FORM, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_CONVERT_DATUM_HASH_TO_DIGITAL_FORM, "Error! Can't convert datum hash string %s to digital form", a_datum_hash); DAP_DELETE(l_gdb_group_mempool); @@ -3541,7 +3541,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * } dap_chain_datum_calc_hash(l_datum, &l_real_hash); if (!dap_hash_fast_compare(&l_datum_hash, &l_real_hash)) { - dap_json_rpc_error_add(DAP_COM_MEMPOOL_PROC_LIST_ERROR_REAL_HASH_DATUM_DOES_NOT_MATCH_HASH_DATA_STRING, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_COM_MEMPOOL_PROC_LIST_ERROR_REAL_HASH_DATUM_DOES_NOT_MATCH_HASH_DATA_STRING, "Error! Datum's real hash doesn't match datum's hash string %s", a_datum_hash); DAP_DELETE(l_gdb_group_mempool); @@ -3566,7 +3566,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * json_object_put(l_jobj_type); json_object_put(l_jobj_ts_created); json_object_put(l_jobj_ts_created_time_stamp); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object *l_jobj_ts_created_str = json_object_new_string(buf); @@ -3580,7 +3580,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * json_object_put(l_jobj_ts_created_time_stamp); json_object_put(l_jobj_ts_created_str); json_object_put(l_jobj_data_size); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_datum, "hash", l_jobj_hash); @@ -3593,7 +3593,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * json_object *l_jobj_verify = json_object_new_object(); if (!l_jobj_verify) { json_object_put(l_jobj_res); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } int l_verify_datum = dap_chain_net_verify_datum_for_add(a_chain, l_datum, &l_datum_hash); @@ -3605,7 +3605,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * json_object_put(l_jobj_verify_err); json_object_put(l_jobj_verify); json_object_put(l_jobj_res); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_verify, "isProcessed", l_jobj_verify_status); @@ -3619,7 +3619,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * json_object_put(l_jobj_verify_status); json_object_put(l_jobj_verify); json_object_put(l_jobj_res); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_verify, "isProcessed", l_jobj_verify_status); @@ -3629,7 +3629,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * if (!l_jobj_verify_status) { json_object_put(l_jobj_verify); json_object_put(l_jobj_res); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_verify, "isProcessed", l_jobj_verify_status); @@ -3638,7 +3638,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * if (!l_jobj_wrn_text) { json_object_put(l_jobj_verify); json_object_put(l_jobj_res); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_verify, "warning", l_jobj_wrn_text); @@ -3647,20 +3647,20 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * if (!l_jobj_text) { json_object_put(l_jobj_verify); json_object_put(l_jobj_res); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_verify, "notice", l_jobj_text); } } } else { - dap_json_rpc_error_add(DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_MOVE_TO_NO_CONCENSUS_FROM_MEMPOOL, "Error! Can't move to no-concensus chains from mempool"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_MOVE_TO_NO_CONCENSUS_FROM_MEMPOOL, "Error! Can't move to no-concensus chains from mempool"); ret = DAP_COM_MEMPOOL_PROC_LIST_ERROR_CAN_NOT_MOVE_TO_NO_CONCENSUS_FROM_MEMPOOL; } } DAP_DELETE(l_gdb_group_mempool); json_object_object_add(l_jobj_res, "verify", l_jobj_verify); - json_object_array_add(*a_json_reply, l_jobj_res); + json_object_array_add(*a_json_arr_reply, l_jobj_res); return ret; } @@ -3674,15 +3674,15 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * */ 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; + json_object **a_json_arr_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"); + dap_json_rpc_error_add(*a_json_arr_reply, -2, "The net and chain argument is not set"); return -2; } json_object *l_ret = json_object_new_object(); if (!l_ret){ - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } if(!dap_chain_net_by_id(a_chain->net_id)) { @@ -3690,14 +3690,14 @@ int _cmd_mempool_proc_all(dap_chain_net_t *a_net, dap_chain_t *a_chain, void **a a_chain->name); if (!l_warn_str) { json_object_put(l_ret); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object *l_warn_obj = json_object_new_string(l_warn_str); DAP_DELETE(l_warn_str); if (!l_warn_obj){ json_object_put(l_ret); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_ret, "warning", l_warn_obj); @@ -3708,18 +3708,18 @@ int _cmd_mempool_proc_all(dap_chain_net_t *a_net, dap_chain_t *a_chain, void **a a_net->pub.name, a_chain->name); if (!l_str_result) { json_object_put(l_ret); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object *l_obj_result = json_object_new_string(l_str_result); DAP_DEL_Z(l_str_result); if (!l_obj_result) { json_object_put(l_ret); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_ret, "result", l_obj_result); - json_object_array_add(*a_json_reply, l_obj_result); + json_object_array_add(*a_json_arr_reply, l_obj_result); return 0; } @@ -3730,46 +3730,46 @@ 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 **a_json_reply) + const char *a_hash_out_type, json_object **a_json_arr_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 ); size_t l_datum_size2 = l_datum? dap_chain_datum_size( l_datum): 0; if (l_datum_size != l_datum_size2) { - dap_json_rpc_error_add(COM_DUMP_ERROR_LIST_CORRUPTED_SIZE, "Error! Corrupted datum %s, size by datum headers " + dap_json_rpc_error_add(*a_json_arr_reply, COM_DUMP_ERROR_LIST_CORRUPTED_SIZE, "Error! Corrupted datum %s, size by datum headers " "is %zd when in mempool is only %zd bytes", a_datum_hash, l_datum_size2, l_datum_size); return COM_DUMP_ERROR_LIST_CORRUPTED_SIZE; } if (!l_datum) { - dap_json_rpc_error_add(COM_DUMP_ERROR_LIST_CORRUPTED_SIZE, "Error! Can't find datum %s in %s", a_datum_hash, a_group_gdb); + dap_json_rpc_error_add(*a_json_arr_reply, COM_DUMP_ERROR_LIST_CORRUPTED_SIZE, "Error! Can't find datum %s in %s", a_datum_hash, a_group_gdb); return COM_DUMP_ERROR_CAN_NOT_FIND_DATUM; } json_object *l_jobj_datum = json_object_new_object(); - dap_chain_datum_dump_json(l_jobj_datum, l_datum, a_hash_out_type, a_net_id); - json_object_array_add(*a_json_reply, l_jobj_datum); + dap_chain_datum_dump_json(*a_json_arr_reply, l_jobj_datum, l_datum, a_hash_out_type, a_net_id); + json_object_array_add(*a_json_arr_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 **a_json_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_arr_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," + dap_json_rpc_error_add(*a_json_arr_reply, COM_DUMP_ERROR_NULL_IS_ARGUMENT_FUNCTION, "The following arguments are not set: network," " datum hash, and output hash type. " "Functions required for operation."); return COM_DUMP_ERROR_NULL_IS_ARGUMENT_FUNCTION; } 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, a_json_reply); + _cmd_mempool_dump_from_group(a_net->pub.id, l_group_mempool, a_datum_hash, a_hash_out_type, a_json_arr_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(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)){ + if (!_cmd_mempool_dump_from_group(a_net->pub.id, l_group_mempool, a_datum_hash, a_hash_out_type, a_json_arr_reply)){ DAP_DELETE(l_group_mempool); break; } @@ -3781,7 +3781,7 @@ int _cmd_mempool_dump(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char * int com_mempool(int a_argc, char **a_argv, void **a_str_reply) { - json_object **a_json_reply = (json_object **)a_str_reply; + json_object **a_json_arr_reply = (json_object **)a_str_reply; int arg_index = 1; dap_chain_net_t *l_net = NULL; dap_chain_t *l_chain = NULL; @@ -3809,22 +3809,22 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) char *l_str_err = dap_strdup_printf("Invalid sub command specified. Sub command %s " "is not supported.", a_argv[1]); if (!l_str_err) { - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); 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_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return -1; } - json_object_array_add(*a_json_reply, l_jobj_str_err); + json_object_array_add(*a_json_arr_reply, l_jobj_str_err); return -2; } } - int cmd_parse_status = dap_chain_node_cli_cmd_values_parse_net_chain_for_json(&arg_index, a_argc, a_argv, &l_chain, &l_net, CHAIN_TYPE_INVALID); + int cmd_parse_status = dap_chain_node_cli_cmd_values_parse_net_chain_for_json(a_json_arr_reply, &arg_index, a_argc, a_argv, &l_chain, &l_net, CHAIN_TYPE_INVALID); if (cmd_parse_status != 0){ - dap_json_rpc_error_add(cmd_parse_status, "Request parsing error (code: %d)", cmd_parse_status); + dap_json_rpc_error_add(*a_json_arr_reply, cmd_parse_status, "Request parsing error (code: %d)", cmd_parse_status); return cmd_parse_status; } const char *l_hash_out_type = "hex"; @@ -3838,7 +3838,7 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) } else l_datum_hash = dap_strdup(l_datum_hash_in); if (!l_datum_hash) { - dap_json_rpc_error_add(-4, "Can't convert hash string %s to hex string", l_datum_hash_in); + dap_json_rpc_error_add(*a_json_arr_reply, -4, "Can't convert hash string %s to hex string", l_datum_hash_in); return -4; } } @@ -3846,7 +3846,7 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) switch (l_cmd) { case SUBCMD_LIST: { if (!l_net) { - dap_json_rpc_error_add(-5, "The command does not include the net parameter. Please specify the " + dap_json_rpc_error_add(*a_json_arr_reply, -5, "The command does not include the net parameter. Please specify the " "parameter something like this mempool list -net <net_name>"); return -5; } @@ -3855,7 +3855,7 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) if (!obj_ret || !obj_net) { json_object_put(obj_ret); json_object_put(obj_net); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return -1; } json_object_object_add(obj_ret, "net", obj_net); @@ -3863,16 +3863,16 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_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_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return -1; } - json_object_array_add(*a_json_reply, l_jobj_err); + json_object_array_add(*a_json_arr_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_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return -1; } bool l_fast = (dap_cli_server_cmd_check_option(a_argv, arg_index, a_argc, "-brief") != -1) ? true : false; @@ -3883,14 +3883,14 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) l_limit = l_limit_str ? strtoul(l_limit_str, NULL, 10) : 1000; l_offset = l_offset_str ? strtoul(l_offset_str, NULL, 10) : 0; if(l_chain) { - s_com_mempool_list_print_for_chain(l_net, l_chain, l_wallet_addr, l_jobj_chains, l_hash_out_type, l_fast, l_limit, l_offset); + s_com_mempool_list_print_for_chain(*a_json_arr_reply, l_net, l_chain, l_wallet_addr, l_jobj_chains, l_hash_out_type, l_fast, l_limit, l_offset); } else { DL_FOREACH(l_net->pub.chains, l_chain) { - s_com_mempool_list_print_for_chain(l_net, l_chain, l_wallet_addr, l_jobj_chains, l_hash_out_type, l_fast, l_limit, l_offset); + s_com_mempool_list_print_for_chain(*a_json_arr_reply, l_net, l_chain, l_wallet_addr, l_jobj_chains, l_hash_out_type, l_fast, l_limit, l_offset); } } json_object_object_add(obj_ret, "chains", l_jobj_chains); - json_object_array_add(*a_json_reply, obj_ret); + json_object_array_add(*a_json_arr_reply, obj_ret); ret = 0; } break; case SUBCMD_PROC: { @@ -3903,7 +3903,7 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) if (l_datum_hash) { 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]); + dap_json_rpc_error_add(*a_json_arr_reply, -3, "Error! %s requires -datum <datum hash> option", a_argv[0]); ret = -3; } } break; @@ -3911,12 +3911,12 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) const char *l_ca_name = NULL; dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-ca_name", &l_ca_name); if (!l_ca_name) { - dap_json_rpc_error_add(-3, "mempool add_ca requires parameter '-ca_name' to specify the certificate name"); + dap_json_rpc_error_add(*a_json_arr_reply, -3, "mempool add_ca requires parameter '-ca_name' to specify the certificate name"); ret = -3; } dap_cert_t *l_cert = dap_cert_find_by_name(l_ca_name); if (!l_cert) { - dap_json_rpc_error_add(-4, "Cert with name '%s' not found.", l_ca_name); + dap_json_rpc_error_add(*a_json_arr_reply, -4, "Cert with name '%s' not found.", l_ca_name); ret = -4; } ret = _cmd_mempool_add_ca(l_net, l_chain, l_cert, a_str_reply); @@ -3926,7 +3926,7 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_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, a_json_reply); + ret = _cmd_mempool_dump(l_net, l_chain, l_datum_hash, l_hash_out_type, a_json_arr_reply); } break; case SUBCMD_COUNT: { char *l_mempool_group; @@ -3935,14 +3935,14 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) if (!obj_ret || !obj_net) { json_object_put(obj_ret); json_object_put(obj_net); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(obj_ret, "net", obj_net); json_object *l_jobj_chains = json_object_new_array(); if (!l_jobj_chains) { json_object_put(obj_ret); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } if(l_chain) { @@ -3960,7 +3960,7 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) json_object_put(l_jobj_chain_name); json_object_put(l_jobj_count); json_object_put(obj_ret); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_chain, "name", l_jobj_chain_name); @@ -3982,7 +3982,7 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) json_object_put(l_jobj_chain_name); json_object_put(l_jobj_count); json_object_put(obj_ret); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object_object_add(l_jobj_chain, "name", l_jobj_chain_name); @@ -3991,7 +3991,7 @@ int com_mempool(int a_argc, char **a_argv, void **a_str_reply) } } json_object_object_add(obj_ret, "chains", l_jobj_chains); - json_object_array_add(*a_json_reply, obj_ret); + json_object_array_add(*a_json_arr_reply, obj_ret); ret = 0; } break; } @@ -5141,9 +5141,10 @@ int com_token_emit(int a_argc, char **a_argv, void **a_str_reply) * @param a_str_reply * @return int */ -int com_tx_cond_create(int a_argc, char ** a_argv, void **a_reply) +int com_tx_cond_create(int a_argc, char ** a_argv, void **a_str_reply) { (void) a_argc; + json_object** a_json_arr_reply = (json_object**)a_str_reply; int arg_index = 1; const char *c_wallets_path = dap_chain_wallet_get_path(g_config); const char * l_token_ticker = NULL; @@ -5161,7 +5162,7 @@ int com_tx_cond_create(int a_argc, char ** a_argv, void **a_reply) if(!l_hash_out_type) l_hash_out_type = "hex"; if(dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_INVALID_PARAMETER_HEX, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_INVALID_PARAMETER_HEX, "Invalid parameter -H, valid values: -H <hex | base58>"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_INVALID_PARAMETER_HEX; } @@ -5184,76 +5185,76 @@ int com_tx_cond_create(int a_argc, char ** a_argv, void **a_reply) dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-srv_uid", &l_srv_uid_str); if(!l_token_ticker) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_TOKEN, "tx_cond_create requires parameter '-token'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_TOKEN, "tx_cond_create requires parameter '-token'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_TOKEN; } if (!l_wallet_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_W, "tx_cond_create requires parameter '-w'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_W, "tx_cond_create requires parameter '-w'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_W; } if (!l_cert_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_CERT, "tx_cond_create requires parameter '-cert'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_CERT, "tx_cond_create requires parameter '-cert'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_CERT; } if(!l_value_datoshi_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_VALUE, "tx_cond_create requires parameter '-value'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_VALUE, "tx_cond_create requires parameter '-value'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_VALUE; } if(!l_value_fee_str){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_FEE, "tx_cond_create requires parameter '-fee'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_FEE, "tx_cond_create requires parameter '-fee'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_FEE; } if(!l_net_name) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_NET, "tx_cond_create requires parameter '-net'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_NET, "tx_cond_create requires parameter '-net'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_NET; } if(!l_unit_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_UNIT, "tx_cond_create requires parameter '-unit'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_UNIT, "tx_cond_create requires parameter '-unit'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_UNIT; } if(!l_srv_uid_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_SRV_UID, "tx_cond_create requires parameter '-srv_uid'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_SRV_UID, "tx_cond_create requires parameter '-srv_uid'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_REQUIRES_PARAMETER_SRV_UID; } dap_chain_net_srv_uid_t l_srv_uid = {}; l_srv_uid.uint64 = strtoll(l_srv_uid_str, NULL, 10); if (!l_srv_uid.uint64) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_FIND_SERVICE_UID, "Can't find service UID %s ", l_srv_uid_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_FIND_SERVICE_UID, "Can't find service UID %s ", l_srv_uid_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_FIND_SERVICE_UID; } dap_chain_net_srv_price_unit_uid_t l_price_unit = { .enm = dap_chain_srv_str_to_unit_enum((char*)l_unit_str)}; if(l_price_unit.enm == SERV_UNIT_UNDEFINED) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_RECOGNIZE_UNIT, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_RECOGNIZE_UNIT, "Can't recognize unit '%s'. Unit must look like { B | SEC }", l_unit_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_RECOGNIZE_UNIT; } l_value_datoshi = dap_chain_balance_scan(l_value_datoshi_str); if(IS_ZERO_256(l_value_datoshi)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_RECOGNIZE_VALUE, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_RECOGNIZE_VALUE, "Can't recognize value '%s' as a number", l_value_datoshi_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_RECOGNIZE_VALUE; } l_value_fee = dap_chain_balance_scan(l_value_fee_str); if(IS_ZERO_256(l_value_fee)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_RECOGNIZE_VALUE_FEE, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_RECOGNIZE_VALUE_FEE, "Can't recognize value '%s' as a number", l_value_fee_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_RECOGNIZE_VALUE_FEE; } dap_chain_net_t * l_net = l_net_name ? dap_chain_net_by_name(l_net_name) : NULL; if(!l_net) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_FIND_NET, "Can't find net '%s'", l_net_name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_FIND_NET, "Can't find net '%s'", l_net_name); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_FIND_NET; } dap_chain_wallet_t *l_wallet = dap_chain_wallet_open(l_wallet_str, c_wallets_path, NULL); // const char* l_sign_str = ""; if(!l_wallet) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_OPEN_WALLET, "Can't open wallet '%s'", l_wallet_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_OPEN_WALLET, "Can't open wallet '%s'", l_wallet_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_OPEN_WALLET; } else { // l_sign_str = dap_chain_wallet_check_sign(l_wallet); @@ -5262,7 +5263,7 @@ int com_tx_cond_create(int a_argc, char ** a_argv, void **a_reply) dap_cert_t *l_cert_cond = dap_cert_find_by_name(l_cert_str); if(!l_cert_cond) { dap_chain_wallet_close(l_wallet); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_FIND_CERT, "Can't find cert '%s'", l_cert_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_FIND_CERT, "Can't find cert '%s'", l_cert_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_FIND_CERT; } @@ -5271,7 +5272,7 @@ int com_tx_cond_create(int a_argc, char ** a_argv, void **a_reply) if (!l_key_cond) { dap_chain_wallet_close(l_wallet); dap_enc_key_delete(l_key_from); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CERT_DOES_NOT_CONATIN_VALID_PUBLIC_KEY, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CERT_DOES_NOT_CONATIN_VALID_PUBLIC_KEY, "Cert '%s' doesn't contain a valid public key", l_cert_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CERT_DOES_NOT_CONATIN_VALID_PUBLIC_KEY; } @@ -5290,14 +5291,14 @@ int com_tx_cond_create(int a_argc, char ** a_argv, void **a_reply) json_object *l_jobj_hash = json_object_new_string(l_hash_str); json_object_object_add(l_jobj_ret, "create_tx_cond", l_jobj_tx_cond_transfer); json_object_object_add(l_jobj_ret, "hash", l_jobj_hash); - json_object_array_add(*a_reply, l_jobj_ret); + json_object_array_add(*a_json_arr_reply, l_jobj_ret); DAP_DELETE(l_hash_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_OK; } json_object *l_jobj_ret = json_object_new_object(); json_object *l_jobj_tx_cond_transfer = json_object_new_boolean(false); json_object_object_add(l_jobj_ret, "create_tx_cond", l_jobj_tx_cond_transfer); - json_object_array_add(*a_reply, l_jobj_ret); + json_object_array_add(*a_json_arr_reply, l_jobj_ret); return DAP_CHAIN_NODE_CLI_COM_TX_COND_CREATE_CAN_NOT_CONDITIONAL_TX_CREATE; } @@ -5333,7 +5334,7 @@ static dap_list_t* s_hashes_parse_str_list(const char * a_hashes_str) return l_ret_list; } -int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) +int com_tx_cond_remove(int a_argc, char ** a_argv, void **a_json_arr_reply) { (void) a_argc; int arg_index = 1; @@ -5350,7 +5351,7 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) if(!l_hash_out_type) l_hash_out_type = "hex"; if(dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_INVALID_PARAMETER_HEX, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_INVALID_PARAMETER_HEX, "Invalid parameter -H, valid values: -H <hex | base58>"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_INVALID_PARAMETER_HEX; } @@ -5367,42 +5368,42 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-srv_uid", &l_srv_uid_str); if (!l_wallet_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_W, "com_txs_cond_remove requires parameter '-w'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_W, "com_txs_cond_remove requires parameter '-w'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_W; } if(!l_value_fee_str){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_FEE, "com_txs_cond_remove requires parameter '-fee'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_FEE, "com_txs_cond_remove requires parameter '-fee'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_FEE; } if(!l_net_name) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_NET, "com_txs_cond_remove requires parameter '-net'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_NET, "com_txs_cond_remove requires parameter '-net'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_NET; } if(!l_hashes_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_HASHES, "com_txs_cond_remove requires parameter '-hashes'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_HASHES, "com_txs_cond_remove requires parameter '-hashes'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_HASHES; } if(!l_srv_uid_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_SRV_UID, "com_txs_cond_remove requires parameter '-srv_uid'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_SRV_UID, "com_txs_cond_remove requires parameter '-srv_uid'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUIRES_PARAMETER_SRV_UID; } dap_chain_net_srv_uid_t l_srv_uid = {}; l_srv_uid.uint64 = strtoll(l_srv_uid_str, NULL, 10); if (!l_srv_uid.uint64) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_SERVICE_UID, "Can't find service UID %s ", l_srv_uid_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_SERVICE_UID, "Can't find service UID %s ", l_srv_uid_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_SERVICE_UID; } dap_chain_net_t * l_net = l_net_name ? dap_chain_net_by_name(l_net_name) : NULL; if(!l_net) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_NET, "Can't find net '%s'", l_net_name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_NET, "Can't find net '%s'", l_net_name); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_NET; } dap_chain_wallet_t *l_wallet = dap_chain_wallet_open(l_wallet_str, c_wallets_path, NULL); // const char* l_sign_str = ""; if(!l_wallet) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_OPEN_WALLET, "Can't open wallet '%s'", l_wallet_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_OPEN_WALLET, "Can't open wallet '%s'", l_wallet_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_OPEN_WALLET; } @@ -5411,30 +5412,30 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) l_value_fee = dap_chain_balance_scan(l_value_fee_str); if(IS_ZERO_256(l_value_fee)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_RECOGNIZE_VALUE_FEE, "Can't recognize value '%s' as a number", l_value_fee_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_RECOGNIZE_VALUE_FEE, "Can't recognize value '%s' as a number", l_value_fee_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_RECOGNIZE_VALUE_FEE; } const char *l_native_ticker = l_net->pub.native_ticker; if (!l_native_ticker){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_NATIVE_TICKER_IN_NET, "Can't find native ticker for net %s", l_net->pub.name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_NATIVE_TICKER_IN_NET, "Can't find native ticker for net %s", l_net->pub.name); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_NATIVE_TICKER_IN_NET; } dap_ledger_t *l_ledger = dap_ledger_by_net_name(l_net->pub.name); if (!l_ledger){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_LEDGER_FOR_NET, "Can't find ledger for net %s", l_net->pub.name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_LEDGER_FOR_NET, "Can't find ledger for net %s", l_net->pub.name); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_FIND_LEDGER_FOR_NET; } // create empty transaction dap_chain_datum_tx_t *l_tx = dap_chain_datum_tx_create(); if (!l_ledger){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_CREATE_NEW_TX, "Can't create new tx"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_CREATE_NEW_TX, "Can't create new tx"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_CREATE_NEW_TX; } dap_list_t *l_hashes_list = s_hashes_parse_str_list(l_hashes_str); if (!l_hashes_list){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUESTED_COND_TX_WITH_HASH_NOT_FOUND, "Requested conditional transaction with hash not found"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUESTED_COND_TX_WITH_HASH_NOT_FOUND, "Requested conditional transaction with hash not found"); dap_chain_datum_tx_delete(l_tx); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_REQUESTED_COND_TX_WITH_HASH_NOT_FOUND; } @@ -5522,7 +5523,7 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) dap_list_free_full(l_hashes_list, NULL); if (IS_ZERO_256(l_cond_value_sum)){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_UNSPENT_COND_TX_IN_HASH_LIST_FOR_WALLET, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_UNSPENT_COND_TX_IN_HASH_LIST_FOR_WALLET, "No unspent conditional transactions in hashes list for wallet %s. Check input parameters.", l_wallet_str); dap_chain_datum_tx_delete(l_tx); dap_chain_wallet_close(l_wallet); @@ -5538,7 +5539,7 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) SUM_256_256(l_total_fee, l_net_fee, &l_total_fee); if (compare256(l_total_fee, l_cond_value_sum) >= 0 ){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_SUM_COND_OUTPUTS_MUST_GREATER_THAN_FEES_SUM, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_SUM_COND_OUTPUTS_MUST_GREATER_THAN_FEES_SUM, "Sum of conditional outputs must be greater than fees sum."); dap_chain_datum_tx_delete(l_tx); dap_chain_wallet_close(l_wallet); @@ -5552,7 +5553,7 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) // return coins to owner if (dap_chain_datum_tx_add_out_item(&l_tx, l_wallet_addr, l_coin_back) == -1) { dap_chain_datum_tx_delete(l_tx); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_RETURNING_COINS_OUTPUT, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_RETURNING_COINS_OUTPUT, "Can't create new TX. Something went wrong.\n"); log_it(L_ERROR, "Can't add returning coins output"); DAP_DELETE(l_wallet_addr); @@ -5567,7 +5568,7 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) dap_chain_datum_tx_delete(l_tx); dap_chain_wallet_close(l_wallet); DAP_DEL_Z(l_wallet_pkey); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_NETWORK_FEE_OUTPUT, "Can't create new TX. Something went wrong.\n"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_NETWORK_FEE_OUTPUT, "Can't create new TX. Something went wrong.\n"); log_it(L_ERROR, "Cant add network fee output"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_NETWORK_FEE_OUTPUT; } @@ -5576,7 +5577,7 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) dap_chain_datum_tx_delete(l_tx); dap_chain_wallet_close(l_wallet); DAP_DEL_Z(l_wallet_pkey); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_VALIDATORS_FEE_OUTPUT, "Can't create new TX. Something went wrong.\n"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_VALIDATORS_FEE_OUTPUT, "Can't create new TX. Something went wrong.\n"); log_it(L_ERROR, "Cant add validator's fee output"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_VALIDATORS_FEE_OUTPUT; } @@ -5586,7 +5587,7 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) if(dap_chain_datum_tx_add_sign_item(&l_tx, l_owner_key) != 1) { dap_chain_datum_tx_delete(l_tx); dap_enc_key_delete(l_owner_key); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_SIGN_OUTPUT, "Can't create new TX. Something went wrong.\n"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_SIGN_OUTPUT, "Can't create new TX. Something went wrong.\n"); log_it( L_ERROR, "Can't add sign output"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_NOT_ADD_SIGN_OUTPUT; } @@ -5599,7 +5600,7 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) dap_chain_datum_tx_delete(l_tx); dap_chain_t *l_chain = dap_chain_net_get_default_chain_by_chain_type(l_net, CHAIN_TYPE_TX); if (!l_chain) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_FIND_DEFAULT_CHAIN_WITH_TX_FOR_NET, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_FIND_DEFAULT_CHAIN_WITH_TX_FOR_NET, "Can't create new TX. Something went wrong.\n"); DAP_DELETE(l_datum); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_CAN_FIND_DEFAULT_CHAIN_WITH_TX_FOR_NET; @@ -5615,10 +5616,10 @@ int com_tx_cond_remove(int a_argc, char ** a_argv, void **reply) json_object_object_add(l_jobj_ret, "tx_create", l_jobj_tx_status); json_object_object_add(l_jobj_ret, "hash", l_jobj_tx_hash); DAP_DELETE(l_hash_str); - json_object_array_add(*reply, l_jobj_ret); + json_object_array_add(*a_json_arr_reply, l_jobj_ret); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_OK; } - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_OTHER_ERROR, "Can't create new TX. Something went wrong."); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_OTHER_ERROR, "Can't create new TX. Something went wrong."); return DAP_CHAIN_NODE_CLI_COM_TX_COND_REMOVE_OTHER_ERROR; } @@ -5640,7 +5641,7 @@ void s_tx_is_srv_pay_check (dap_chain_net_t* a_net, dap_chain_datum_tx_t *a_tx, } -int com_tx_cond_unspent_find(int a_argc, char **a_argv, void **reply) +int com_tx_cond_unspent_find(int a_argc, char **a_argv, void **a_json_arr_reply) { (void) a_argc; int arg_index = 1; @@ -5654,7 +5655,7 @@ int com_tx_cond_unspent_find(int a_argc, char **a_argv, void **reply) if(!l_hash_out_type) l_hash_out_type = "hex"; if(dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_HEX, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_HEX, "Invalid parameter -H, valid values: -H <hex | base58>"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_HEX; } @@ -5667,17 +5668,17 @@ int com_tx_cond_unspent_find(int a_argc, char **a_argv, void **reply) dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-srv_uid", &l_srv_uid_str); if (!l_wallet_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_W, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_W, "com_txs_cond_remove requires parameter '-w'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_W; } if(!l_net_name) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_NET, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_NET, "com_txs_cond_remove requires parameter '-net'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_NET; } if(!l_srv_uid_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_SRV_UID, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_SRV_UID, "com_txs_cond_remove requires parameter '-srv_uid'"); return DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_INVALID_PARAMETER_SRV_UID; } @@ -5685,21 +5686,21 @@ int com_tx_cond_unspent_find(int a_argc, char **a_argv, void **reply) dap_chain_net_srv_uid_t l_srv_uid = {}; l_srv_uid.uint64 = strtoll(l_srv_uid_str, NULL, 10); if (!l_srv_uid.uint64) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_SERVICE_UID, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_SERVICE_UID, "Can't find service UID %s ", l_srv_uid_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_SERVICE_UID; } dap_chain_net_t * l_net = l_net_name ? dap_chain_net_by_name(l_net_name) : NULL; if(!l_net) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_NET, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_NET, "Can't find net '%s'", l_net_name); return DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_NET; } dap_chain_wallet_t *l_wallet = dap_chain_wallet_open(l_wallet_str, c_wallets_path, NULL); if(!l_wallet) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_OPEN_WALLET, "Can't open wallet '%s'", l_wallet_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_OPEN_WALLET, "Can't open wallet '%s'", l_wallet_str); return DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_OPEN_WALLET; } @@ -5708,13 +5709,13 @@ int com_tx_cond_unspent_find(int a_argc, char **a_argv, void **reply) const char *l_native_ticker = l_net->pub.native_ticker; if (!l_native_ticker){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_NATIVE_TICKER_IN_NET, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_NATIVE_TICKER_IN_NET, "Can't find native ticker for net %s", l_net->pub.name); return DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_NATIVE_TICKER_IN_NET; } dap_ledger_t *l_ledger = dap_ledger_by_net_name(l_net->pub.name); if (!l_ledger){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_LEDGER_FOR_NET, "Can't find ledger for net %s", l_net->pub.name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_LEDGER_FOR_NET, "Can't find ledger for net %s", l_net->pub.name); return DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_CAN_NOT_FIND_LEDGER_FOR_NET; } @@ -5799,7 +5800,7 @@ int com_tx_cond_unspent_find(int a_argc, char **a_argv, void **reply) json_object_object_add(l_jobj_ret, "transactions_out_cond", l_jobj_tx_list_cond_outs); json_object_object_add(l_jobj_ret, "total", l_jobj_total); dap_list_free_full(l_tx_list, NULL); - json_object_array_add(*reply, l_jobj_ret); + json_object_array_add(*a_json_arr_reply, l_jobj_ret); DAP_DEL_Z(l_wallet_pkey); dap_chain_wallet_close(l_wallet); return DAP_CHAIN_NODE_CLI_COM_TX_COND_UNSPEND_FIND_OK; @@ -5825,9 +5826,9 @@ typedef enum cmd_mempool_add_ca_error_list{ */ 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 **)a_str_reply; + json_object **a_json_arr_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."); + dap_json_rpc_error_add(*a_json_arr_reply, 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; } dap_chain_t *l_chain = NULL; @@ -5837,19 +5838,19 @@ int _cmd_mempool_add_ca(dap_chain_net_t *a_net, dap_chain_t *a_chain, dap_cert_t l_chain = dap_chain_net_get_chain_by_chain_type(a_net, CHAIN_TYPE_CA); if (!l_chain) { // If can't auto detect // clean previous error code - dap_json_rpc_error_add(COM_MEMPOOL_ADD_CA_ERROR_NO_CAINS_FOR_CA_DATUM_IN_NET, + dap_json_rpc_error_add(*a_json_arr_reply, COM_MEMPOOL_ADD_CA_ERROR_NO_CAINS_FOR_CA_DATUM_IN_NET, "No chains for CA datum in network \"%s\"", a_net->pub.name); return COM_MEMPOOL_ADD_CA_ERROR_NO_CAINS_FOR_CA_DATUM_IN_NET; } } if(!a_cert->enc_key){ - dap_json_rpc_error_add(COM_MEMPOOL_ADD_CA_ERROR_CORRUPTED_CERTIFICATE_WITHOUT_KEYS, + dap_json_rpc_error_add(*a_json_arr_reply, COM_MEMPOOL_ADD_CA_ERROR_CORRUPTED_CERTIFICATE_WITHOUT_KEYS, "Corrupted certificate \"%s\" without keys certificate", a_cert->name); return COM_MEMPOOL_ADD_CA_ERROR_CORRUPTED_CERTIFICATE_WITHOUT_KEYS; } if (a_cert->enc_key->priv_key_data_size || a_cert->enc_key->priv_key_data){ - dap_json_rpc_error_add(COM_MEMPOOL_ADD_CA_ERROR_CERTIFICATE_HAS_PRIVATE_KEY_DATA, + dap_json_rpc_error_add(*a_json_arr_reply, COM_MEMPOOL_ADD_CA_ERROR_CERTIFICATE_HAS_PRIVATE_KEY_DATA, "Certificate \"%s\" has private key data. Please export public only key certificate without private keys", a_cert->name); return COM_MEMPOOL_ADD_CA_ERROR_CERTIFICATE_HAS_PRIVATE_KEY_DATA; } @@ -5858,7 +5859,7 @@ int _cmd_mempool_add_ca(dap_chain_net_t *a_net, dap_chain_t *a_chain, dap_cert_t uint32_t l_cert_serialized_size = 0; byte_t * l_cert_serialized = dap_cert_mem_save(a_cert, &l_cert_serialized_size); if(!l_cert_serialized){ - dap_json_rpc_error_add(COM_MEMPOOL_ADD_CA_ERROR_CAN_NOT_SERIALIZE, + dap_json_rpc_error_add(*a_json_arr_reply, COM_MEMPOOL_ADD_CA_ERROR_CAN_NOT_SERIALIZE, "Can't serialize in memory certificate \"%s\"", a_cert->name); return COM_MEMPOOL_ADD_CA_ERROR_CAN_NOT_SERIALIZE; } @@ -5866,7 +5867,7 @@ int _cmd_mempool_add_ca(dap_chain_net_t *a_net, dap_chain_t *a_chain, dap_cert_t dap_chain_datum_t * l_datum = dap_chain_datum_create( DAP_CHAIN_DATUM_CA, l_cert_serialized , l_cert_serialized_size); DAP_DELETE( l_cert_serialized); if(!l_datum){ - dap_json_rpc_error_add(COM_MEMPOOL_ADD_CA_ERROR_CAN_NOT_SERIALIZE, + dap_json_rpc_error_add(*a_json_arr_reply, COM_MEMPOOL_ADD_CA_ERROR_CAN_NOT_SERIALIZE, "Can't produce datum from certificate \"%s\"", a_cert->name); return COM_MEMPOOL_ADD_CA_ERROR_CAN_NOT_SERIALIZE; } @@ -5877,31 +5878,31 @@ int _cmd_mempool_add_ca(dap_chain_net_t *a_net, dap_chain_t *a_chain, dap_cert_t if (l_hash_str) { char *l_msg = dap_strdup_printf("Datum %s was successfully placed to mempool", l_hash_str); if (!l_msg) { - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object *l_obj_message = json_object_new_string(l_msg); DAP_DELETE(l_msg); DAP_DELETE(l_hash_str); if (!l_obj_message) { - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } - json_object_array_add(*a_json_reply, l_obj_message); + json_object_array_add(*a_json_arr_reply, l_obj_message); return 0; } else { char *l_msg = dap_strdup_printf("Can't place certificate \"%s\" to mempool", a_cert->name); if (!l_msg) { - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } json_object *l_obj_msg = json_object_new_string(l_msg); DAP_DELETE(l_msg); if (!l_obj_msg) { - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } - json_object_array_add(*a_json_reply, l_obj_msg); + json_object_array_add(*a_json_arr_reply, l_obj_msg); return COM_MEMPOOL_ADD_CA_ERROR_CAN_NOT_PLACE_CERTIFICATE; } } @@ -6147,7 +6148,7 @@ 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_json_arr_reply) { int l_arg_index = 1; const char *l_net_name = NULL; // optional parameter @@ -6161,19 +6162,19 @@ int com_tx_create_json(int a_argc, char ** a_argv, void **reply) dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-json", &l_json_file_path); if(!l_json_file_path) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_REQUIRE_PARAMETER_JSON, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_REQUIRE_PARAMETER_JSON, "Command requires one of parameters '-json <json file path>'"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_REQUIRE_PARAMETER_JSON; } // Open json file struct json_object *l_json = json_object_from_file(l_json_file_path); if(!l_json) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_CAN_NOT_OPEN_JSON_FILE, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_CAN_NOT_OPEN_JSON_FILE, "Can't open json file: %s", json_util_get_last_err()); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_CAN_NOT_OPEN_JSON_FILE; } if(!json_object_is_type(l_json, json_type_object)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_WRONG_JSON_FORMAT, "Wrong json format"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_WRONG_JSON_FORMAT, "Wrong json format"); json_object_put(l_json); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_WRONG_JSON_FORMAT; } @@ -6186,7 +6187,7 @@ int com_tx_create_json(int a_argc, char ** a_argv, void **reply) l_net_name = json_object_get_string(l_json_net); } if(!l_net_name) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_REQUIRE_PARAMETER_NET, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_REQUIRE_PARAMETER_NET, "Command requires parameter '-net' or set net in the json file"); json_object_put(l_json); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_REQUIRE_PARAMETER_NET; @@ -6195,7 +6196,7 @@ int com_tx_create_json(int a_argc, char ** a_argv, void **reply) dap_chain_net_t *l_net = dap_chain_net_by_name(l_net_name); l_native_token = l_net->pub.native_ticker; if(!l_net) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_NOT_FOUNT_NET_BY_NAME, "Not found net by name '%s'", l_net_name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_NOT_FOUNT_NET_BY_NAME, "Not found net by name '%s'", l_net_name); json_object_put(l_json); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_NOT_FOUNT_NET_BY_NAME; } @@ -6212,7 +6213,7 @@ int com_tx_create_json(int a_argc, char ** a_argv, void **reply) l_chain = dap_chain_net_get_chain_by_chain_type(l_net, CHAIN_TYPE_TX); } if(!l_chain) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_NOT_FOUNT_CHAIN_BY_NAME, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_NOT_FOUNT_CHAIN_BY_NAME, "Chain name '%s' not found, try use parameter '-chain' or set chain in the json file", l_chain_name); json_object_put(l_json); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_NOT_FOUNT_CHAIN_BY_NAME; @@ -6223,7 +6224,7 @@ int com_tx_create_json(int a_argc, char ** a_argv, void **reply) struct json_object *l_json_items = json_object_object_get(l_json, "items"); size_t l_items_count = json_object_array_length(l_json_items); if(!l_json_items || !json_object_is_type(l_json_items, json_type_array) || !(l_items_count = json_object_array_length(l_json_items))) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_NOT_FOUNT_ARRAY_ITEMS, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_NOT_FOUNT_ARRAY_ITEMS, "Wrong json format: not found array 'items' or array is empty"); json_object_put(l_json); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_NOT_FOUNT_ARRAY_ITEMS; @@ -6234,7 +6235,7 @@ int com_tx_create_json(int a_argc, char ** a_argv, void **reply) dap_chain_datum_tx_t *l_tx = DAP_NEW_Z_SIZE(dap_chain_datum_tx_t, sizeof(dap_chain_datum_tx_t)); if(!l_tx) { json_object_put(l_json); - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(*a_json_arr_reply); return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED; } l_tx->header.ts_created = time(NULL); @@ -6806,7 +6807,7 @@ int com_tx_create_json(int a_argc, char ** a_argv, void **reply) json_object_object_add(l_jobj_ret, "valid_items", l_jobj_valid_items); json_object_object_add(l_jobj_ret, "total_items", l_jobj_total_items); json_object_object_add(l_jobj_ret, "errors", l_jobj_errors); - json_object_array_add(*reply, l_jobj_ret); + json_object_array_add(*a_json_arr_reply, l_jobj_ret); DAP_DELETE(l_tx); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_INVALID_ITEMS; } @@ -6826,7 +6827,7 @@ int com_tx_create_json(int a_argc, char ** a_argv, void **reply) DAP_DEL_Z(l_datum_tx); DAP_DELETE(l_gdb_group_mempool_base_tx); if(!l_placed) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_CAN_NOT_ADD_TRANSACTION_TO_MEMPOOL, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_CAN_NOT_ADD_TRANSACTION_TO_MEMPOOL, "Can't add transaction to mempool"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_CAN_NOT_ADD_TRANSACTION_TO_MEMPOOL; } @@ -6837,7 +6838,7 @@ int com_tx_create_json(int a_argc, char ** a_argv, void **reply) json_object_object_add(l_jobj_ret, "tx_create", l_jobj_tx_create); json_object_object_add(l_jobj_ret, "hash", l_jobj_hash); json_object_object_add(l_jobj_ret, "total_items", l_jobj_total_items); - json_object_array_add(*reply, l_jobj_ret); + json_object_array_add(*a_json_arr_reply, l_jobj_ret); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_JSON_OK; } @@ -6850,7 +6851,7 @@ 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_json_arr_reply) { int arg_index = 1; // int cmd_num = 1; @@ -6877,14 +6878,14 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) if(!l_hash_out_type) l_hash_out_type = "hex"; if(dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_HASH_INVALID, "Invalid parameter -H, valid values: -H <hex | base58>"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_HASH_INVALID, "Invalid parameter -H, valid values: -H <hex | base58>"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_HASH_INVALID; } dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-net", &l_net_name); dap_chain_net_t * l_net = dap_chain_net_by_name(l_net_name); if (l_net == NULL) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_NET_NOT_FOUND, "not found net by name '%s'", l_net_name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_NET_NOT_FOUND, "not found net by name '%s'", l_net_name); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_NET_NOT_FOUND; } @@ -6906,12 +6907,12 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) if (dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-fee", &str_tmp)) l_value_fee = dap_chain_balance_scan(str_tmp); if (IS_ZERO_256(l_value_fee) && (!l_emission_hash_str || (str_tmp && strcmp(str_tmp, "0")))) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_FEE_IS_UINT256, "tx_create requires parameter '-fee' to be valid uint256"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_FEE_IS_UINT256, "tx_create requires parameter '-fee' to be valid uint256"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_FEE_IS_UINT256; } if((!l_from_wallet_name && !l_emission_hash_str)||(l_from_wallet_name && l_emission_hash_str)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_FROM_WALLET_OR_FROM_EMISSION, "tx_create requires one of parameters '-from_wallet' or '-from_emission'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_FROM_WALLET_OR_FROM_EMISSION, "tx_create requires one of parameters '-from_wallet' or '-from_emission'"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_FROM_WALLET_OR_FROM_EMISSION; } @@ -6920,7 +6921,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) dap_chain_t *l_emission_chain = NULL; if (l_emission_hash_str) { if (dap_chain_hash_fast_from_str(l_emission_hash_str, &l_emission_hash)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_FROM_EMISSION, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_FROM_EMISSION, "tx_create requires parameter '-from_emission' " "to be valid string containing hash in hex or base58 format"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_FROM_EMISSION; @@ -6931,7 +6932,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) l_emission_chain = dap_chain_net_get_default_chain_by_chain_type(l_net,CHAIN_TYPE_EMISSION); } if (!l_emission_chain) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_FROM_CHAIN_EMISSION, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_FROM_CHAIN_EMISSION, "tx_create requires parameter '-chain_emission' " "to be a valid chain name or set default datum type in chain configuration file"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_FROM_CHAIN_EMISSION; @@ -6940,7 +6941,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) if (l_wallet_fee_name){ l_wallet_fee = dap_chain_wallet_open(l_wallet_fee_name, c_wallets_path, NULL); if (!l_wallet_fee) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_WALLET_FEE, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_WALLET_FEE, "Wallet %s does not exist", l_wallet_fee_name); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_WALLET_FEE; } @@ -6948,40 +6949,40 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) } else if (l_cert_str) { l_cert = dap_cert_find_by_name(l_cert_str); if (!l_cert) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_CERT_IS_INVALID, "Certificate %s is invalid", l_cert_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_CERT_IS_INVALID, "Certificate %s is invalid", l_cert_str); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_CERT_IS_INVALID; } l_priv_key = l_cert->enc_key; } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_CERT_OR_WALLET_FEE, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_CERT_OR_WALLET_FEE, "tx_create requires parameter '-cert' or '-wallet_fee' for create base tx for emission"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_CERT_OR_WALLET_FEE; } } else { dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-token", &l_token_ticker); if (!l_token_ticker) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_TOKEN, "tx_create requires parameter '-token'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_TOKEN, "tx_create requires parameter '-token'"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_TOKEN; } if (!dap_ledger_token_ticker_check(l_net->pub.ledger, l_token_ticker)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_TOKEN_NOT_DECLARATED_IN_NET, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_TOKEN_NOT_DECLARATED_IN_NET, "Ticker '%s' is not declared on network '%s'.", l_token_ticker, l_net_name); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_TOKEN_NOT_DECLARATED_IN_NET; } dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-to_addr", &addr_base58_to); if (!addr_base58_to) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_TO_ADDR, "tx_create requires parameter '-to_addr'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_TO_ADDR, "tx_create requires parameter '-to_addr'"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_TO_ADDR; } l_addr_to = dap_chain_addr_from_str(addr_base58_to); if(!l_addr_to) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_DESTINATION_ADDRESS_INVALID, "destination address is invalid"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_DESTINATION_ADDRESS_INVALID, "destination address is invalid"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_DESTINATION_ADDRESS_INVALID; } if (dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-value", &str_tmp)) l_value = dap_chain_balance_scan(str_tmp); if (IS_ZERO_256(l_value)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_VALUE_OR_INVALID_FORMAT_VALUE, "tx_create requires parameter '-value' to be valid uint256 value"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_VALUE_OR_INVALID_FORMAT_VALUE, "tx_create requires parameter '-value' to be valid uint256 value"); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_REQUIRE_PARAMETER_VALUE_OR_INVALID_FORMAT_VALUE; } } @@ -6994,7 +6995,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) } if(!l_chain) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_NOT_FOUND_CHAIN, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_NOT_FOUND_CHAIN, "not found chain name '%s', try use parameter '-chain' or set default datum type in chain configuration file", l_chain_name); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_NOT_FOUND_CHAIN; @@ -7004,7 +7005,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) if (l_emission_hash_str) { char *l_tx_hash_str = NULL; if (!l_priv_key) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_NO_PRIVATE_KEY_DEFINED, "No private key defined for creating the underlying " + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_NO_PRIVATE_KEY_DEFINED, "No private key defined for creating the underlying " "transaction no '-wallet_fee' or '-cert' parameter specified."); l_ret = DAP_CHAIN_NODE_CLI_COM_TX_CREATE_NO_PRIVATE_KEY_DEFINED; } @@ -7027,7 +7028,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) json_object_object_add(l_jobj_emission, "message", l_jobj_msg); l_ret = DAP_CHAIN_NODE_CLI_COM_TX_CREATE_CAN_NOT_ADD_DATUM_IN_MEMPOOL; } - json_object_array_add(*reply, l_jobj_emission); + json_object_array_add(*a_json_arr_reply, l_jobj_emission); DAP_DELETE(l_addr_to); if (l_wallet_fee) { dap_chain_wallet_close(l_wallet_fee); @@ -7040,7 +7041,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) json_object *l_jobj_result = json_object_new_object(); if(!l_wallet) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_WALLET_DOES_NOT_EXIST, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_WALLET_DOES_NOT_EXIST, "wallet %s does not exist", l_from_wallet_name); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_WALLET_DOES_NOT_EXIST; } else { @@ -7056,7 +7057,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) DAP_DELETE(l_addr_to); dap_chain_wallet_close(l_wallet); dap_enc_key_delete(l_priv_key); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_SOURCE_ADDRESS_INVALID, "source address is invalid"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_SOURCE_ADDRESS_INVALID, "source address is invalid"); json_object_put(l_jobj_result); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_SOURCE_ADDRESS_INVALID; } @@ -7065,7 +7066,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) DAP_DELETE(l_addr_to); dap_chain_wallet_close(l_wallet); dap_enc_key_delete(l_priv_key); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_EQ_SOURCE_DESTINATION_ADDRESS, "The transaction cannot be directed to the same address as the source."); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_EQ_SOURCE_DESTINATION_ADDRESS, "The transaction cannot be directed to the same address as the source."); json_object_put(l_jobj_result); return DAP_CHAIN_NODE_CLI_COM_TX_CREATE_EQ_SOURCE_DESTINATION_ADDRESS; } @@ -7083,7 +7084,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) dap_string_append_printf(l_allowed_list, "0x%016"DAP_UINT64_FORMAT_X, l_net->pub.id.uint64); for (dap_list_t *it = l_net->pub.bridged_networks; it; it = it->next) dap_string_append_printf(l_allowed_list, ", 0x%016"DAP_UINT64_FORMAT_X, ((dap_chain_net_id_t *)it->data)->uint64); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_CREATE_DESTINATION_NETWORK_IS_UNREACHEBLE, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_CREATE_DESTINATION_NETWORK_IS_UNREACHEBLE, "Destination network ID=0x%"DAP_UINT64_FORMAT_x " is unreachable. List of available network IDs:\n%s" " Please, change network name or wallet address", @@ -7118,7 +7119,7 @@ int com_tx_create(int a_argc, char **a_argv, void **reply) l_ret = DAP_CHAIN_NODE_CLI_COM_TX_CREATE_CAN_NOT_CREATE_TRANSACTION; } } - json_object_array_add(*reply, l_jobj_result); + json_object_array_add(*a_json_arr_reply, l_jobj_result); DAP_DELETE(l_addr_to); dap_chain_wallet_close(l_wallet); @@ -7137,8 +7138,9 @@ 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) { + json_object **a_json_arr_reply = (json_object **)a_str_reply; const char * l_tx_hash_str = NULL; dap_chain_net_t * l_net = NULL; dap_chain_t * l_chain = NULL; @@ -7146,10 +7148,10 @@ int com_tx_verify(int a_argc, char **a_argv, void **reply) dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-tx", &l_tx_hash_str); if(!l_tx_hash_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_REQUIRE_PARAMETER_TX, "tx_verify requires parameter '-tx'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_REQUIRE_PARAMETER_TX, "tx_verify requires parameter '-tx'"); return DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_REQUIRE_PARAMETER_TX; } - dap_chain_node_cli_cmd_values_parse_net_chain_for_json(&l_arg_index, a_argc, a_argv, &l_chain, &l_net, + dap_chain_node_cli_cmd_values_parse_net_chain_for_json(a_json_arr_reply, &l_arg_index, a_argc, a_argv, &l_chain, &l_net, CHAIN_TYPE_TX); if (!l_net || !l_chain) { return DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_NET_CHAIN_UNDEFINED; @@ -7159,7 +7161,7 @@ int com_tx_verify(int a_argc, char **a_argv, void **reply) if (dap_chain_hash_fast_from_hex_str(l_tx_hash_str, &l_tx_hash)) { l_hex_str_from58 = dap_enc_base58_to_hex_str_from_str(l_tx_hash_str); if (dap_chain_hash_fast_from_hex_str(l_hex_str_from58, &l_tx_hash)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_INVALID_TX_HASH, "Invalid tx hash format, need hex or base58"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_INVALID_TX_HASH, "Invalid tx hash format, need hex or base58"); return DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_INVALID_TX_HASH; } } @@ -7168,13 +7170,13 @@ int com_tx_verify(int a_argc, char **a_argv, void **reply) dap_chain_datum_t *l_datum = (dap_chain_datum_t*)dap_global_db_get_sync(l_gdb_group, l_hex_str_from58 ? l_hex_str_from58 : l_tx_hash_str, &l_datum_size, NULL, NULL); DAP_DEL_Z(l_hex_str_from58); if (!l_datum) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_SPECIFIED_TX_NOT_FOUND, "Specified tx not found"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_SPECIFIED_TX_NOT_FOUND, "Specified tx not found"); return DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_SPECIFIED_TX_NOT_FOUND; } if (l_datum->header.type_id != DAP_CHAIN_DATUM_TX){ char *l_str_err = dap_strdup_printf("Based on the specified hash, the type %s was found and not a transaction.", dap_chain_datum_type_id_to_str(l_datum->header.type_id)); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_HASH_IS_NOT_TX_HASH, l_str_err); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_HASH_IS_NOT_TX_HASH, l_str_err); DAP_DELETE(l_str_err); return DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_HASH_IS_NOT_TX_HASH; } @@ -7194,14 +7196,14 @@ int com_tx_verify(int a_argc, char **a_argv, void **reply) json_object_object_add(l_jobj_error, "message", l_jobj_err_str); json_object_object_add(l_obj_ret, "verify", l_jobj_verfiy); json_object_object_add(l_obj_ret, "error", l_jobj_error); - json_object_array_add(*reply, l_obj_ret); + json_object_array_add(*a_json_arr_reply, l_obj_ret); return DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_TX_NOT_VERIFY; } else { l_jobj_verfiy = json_object_new_boolean(true); l_jobj_error = json_object_new_null(); json_object_object_add(l_obj_ret, "verify", l_jobj_verfiy); json_object_object_add(l_obj_ret, "error", l_jobj_error); - json_object_array_add(*reply, l_obj_ret); + json_object_array_add(*a_json_arr_reply, l_obj_ret); return DAP_CHAIN_NODE_CLI_COM_TX_VERIFY_OK; } } @@ -7218,7 +7220,7 @@ int com_tx_verify(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 **)a_str_reply; + json_object **a_json_arr_reply = (json_object **)a_str_reply; int arg_index = 1; const char *l_addr_base58 = NULL; const char *l_wallet_name = NULL; @@ -7239,7 +7241,7 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) if(!l_hash_out_type) l_hash_out_type = "hex"; if(dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_PARAM_ERR, "Invalid parameter -H, valid values: -H <hex | base58>"); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_PARAM_ERR; @@ -7268,13 +7270,13 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) bool l_is_tx_all = dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-all", NULL); if (!l_addr_base58 && !l_wallet_name && !l_tx_hash_str && !l_is_tx_all) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_PARAM_ERR, "tx_history requires parameter '-addr' or '-w' or '-tx'"); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_PARAM_ERR; } if (!l_net_str && !l_addr_base58&& !l_is_tx_all) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_PARAM_ERR, "tx_history requires parameter '-net' or '-addr'"); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_PARAM_ERR; } @@ -7282,7 +7284,7 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) dap_chain_hash_fast_t l_tx_hash; if (l_tx_hash_str && dap_chain_hash_fast_from_str(l_tx_hash_str, &l_tx_hash) != 0) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_HASH_REC_ERR, "tx hash not recognized"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_HASH_REC_ERR, "tx hash not recognized"); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_HASH_REC_ERR; } @@ -7290,7 +7292,7 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) if (!l_addr_base58 && l_net_str) { l_net = dap_chain_net_by_name(l_net_str); if (!l_net) { // Can't find such network - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_NET_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_NET_PARAM_ERR, "tx_history requires parameter '-net' to be valid chain network name"); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_NET_PARAM_ERR; } @@ -7299,19 +7301,19 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) dap_chain_addr_t *l_addr = NULL; if (l_addr_base58) { if (l_tx_hash_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_INCOMPATIBLE_PARAMS_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_INCOMPATIBLE_PARAMS_ERR, "Incompatible params '-addr' & '-tx'"); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_INCOMPATIBLE_PARAMS_ERR; } l_addr = dap_chain_addr_from_str(l_addr_base58); if (!l_addr) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_WALLET_ADDR_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_WALLET_ADDR_ERR, "Wallet address not recognized"); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_WALLET_ADDR_ERR; } if (l_net) { if (l_net->pub.id.uint64 != l_addr->net_id.uint64) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_ID_NET_ADDR_DIF_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_ID_NET_ADDR_DIF_ERR, "Network ID with '-net' param and network ID with '-addr' param are different"); DAP_DELETE(l_addr); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_ID_NET_ADDR_DIF_ERR; @@ -7328,7 +7330,7 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) 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)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_ADDR_WALLET_DIF_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_ADDR_WALLET_DIF_ERR, "Address with '-addr' param and address with '-w' param are different"); DAP_DELETE(l_addr); DAP_DELETE(l_addr_tmp); @@ -7339,7 +7341,7 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) l_addr = l_addr_tmp; dap_chain_wallet_close(l_wallet); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_WALLET_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_WALLET_ERR, "The wallet %s is not activated or it doesn't exist", l_wallet_name); DAP_DELETE(l_addr); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_WALLET_ERR; @@ -7347,7 +7349,7 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) } // Select chain, if any if (!l_net) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_NET_ERR, "Could not determine the network from which to " + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_NET_ERR, "Could not determine the network from which to " "extract data for the tx_history command to work."); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_NET_ERR; } @@ -7357,7 +7359,7 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) l_chain = dap_chain_net_get_default_chain_by_chain_type(l_net, CHAIN_TYPE_TX); if(!l_chain) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_CHAIN_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_CHAIN_PARAM_ERR, "tx_history requires parameter '-chain' to be valid chain name in chain net %s." " You can set default datum type in chain configuration file", l_net_str); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_CHAIN_PARAM_ERR; @@ -7366,9 +7368,9 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) json_object * json_obj_out = NULL; if (l_tx_hash_str) { // history tx hash - json_obj_out = dap_db_history_tx(&l_tx_hash, l_chain, l_hash_out_type, l_net); + json_obj_out = dap_db_history_tx(*a_json_arr_reply, &l_tx_hash, l_chain, l_hash_out_type, l_net); if (!json_obj_out) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_DAP_DB_HISTORY_TX_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_DAP_DB_HISTORY_TX_ERR, "something went wrong in tx_history"); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_DAP_DB_HISTORY_TX_ERR; } @@ -7378,15 +7380,15 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) if (!json_obj_summary) { return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_MEMORY_ERR; } - json_obj_out = dap_db_history_addr(l_addr, l_chain, l_hash_out_type, dap_chain_addr_to_str_static(l_addr), json_obj_summary, l_limit, l_offset, l_brief, l_tx_srv_str, l_action, l_head); + json_obj_out = dap_db_history_addr(*a_json_arr_reply, l_addr, l_chain, l_hash_out_type, dap_chain_addr_to_str_static(l_addr), json_obj_summary, l_limit, l_offset, l_brief, l_tx_srv_str, l_action, l_head); if (!json_obj_out) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_DAP_DB_HISTORY_ADDR_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_DAP_DB_HISTORY_ADDR_ERR, "something went wrong in tx_history"); json_object_put(json_obj_summary); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_DAP_DB_HISTORY_ADDR_ERR; } - json_object_array_add(*json_arr_reply, json_obj_out); - json_object_array_add(*json_arr_reply, json_obj_summary); + json_object_array_add(*a_json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_summary); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_OK; } else if (l_is_tx_all) { // history all @@ -7395,23 +7397,27 @@ int com_tx_history(int a_argc, char ** a_argv, void **a_str_reply) return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_MEMORY_ERR; } - json_object* json_arr_history_all = dap_db_history_tx_all(l_chain, l_net, l_hash_out_type, json_obj_summary, + json_object* json_arr_history_all = dap_db_history_tx_all(*a_json_arr_reply, l_chain, l_net, l_hash_out_type, json_obj_summary, l_limit, l_offset, l_brief, l_tx_srv_str, l_action, l_head); if (!json_arr_history_all) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_DAP_DB_HISTORY_ALL_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_DAP_DB_HISTORY_ALL_ERR, "something went wrong in tx_history"); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_DAP_DB_HISTORY_ALL_ERR; } - json_object_array_add(*json_arr_reply, json_arr_history_all); - json_object_array_add(*json_arr_reply, json_obj_summary); + json_object_array_add(*a_json_arr_reply, json_arr_history_all); + json_object_array_add(*a_json_arr_reply, json_obj_summary); return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_OK; } if (json_obj_out) { - json_object_array_add(*json_arr_reply, json_obj_out); + const char* json_string_sdfasf = json_object_to_json_string(*a_json_arr_reply); + char* result_string_sadfasf = strdup(json_string_sdfasf); + json_object_array_add(*a_json_arr_reply, json_obj_out); + const char* json_string = json_object_to_json_string(*a_json_arr_reply); + char* result_string = strdup(json_string); } else { - json_object_array_add(*json_arr_reply, json_object_new_string("empty")); + json_object_array_add(*a_json_arr_reply, json_object_new_string("empty")); } return DAP_CHAIN_NODE_CLI_COM_TX_HISTORY_OK; diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c index ccd6b5fde5..71ac1f8fc1 100644 --- a/modules/net/dap_chain_node_cli_cmd_tx.c +++ b/modules/net/dap_chain_node_cli_cmd_tx.c @@ -79,7 +79,8 @@ void s_dap_chain_tx_hash_processed_ht_free(dap_chain_tx_hash_processed_ht_t **l_ * @param l_tx_num */ -bool s_dap_chain_datum_tx_out_data(dap_chain_datum_tx_t *a_datum, +bool s_dap_chain_datum_tx_out_data(json_object* a_json_arr_reply, + dap_chain_datum_tx_t *a_datum, dap_ledger_t *a_ledger, json_object * json_obj_out, const char *a_hash_out_type, @@ -100,7 +101,7 @@ bool s_dap_chain_datum_tx_out_data(dap_chain_datum_tx_t *a_datum, json_object_object_add(json_obj_out, "Token_ticker", json_object_new_string(l_ticker)); json_object_object_add(json_obj_out, "Token_description", l_description ? json_object_new_string(l_description) : json_object_new_null()); - dap_chain_datum_dump_tx_json(a_datum, l_ticker, json_obj_out, a_hash_out_type, a_tx_hash, a_ledger->net->pub.id); + dap_chain_datum_dump_tx_json(a_json_arr_reply, a_datum, l_ticker, json_obj_out, a_hash_out_type, a_tx_hash, a_ledger->net->pub.id); json_object* json_arr_items = json_object_new_array(); bool l_spent = false; byte_t *l_item; size_t l_size; int i, l_out_idx = -1; @@ -123,7 +124,8 @@ bool s_dap_chain_datum_tx_out_data(dap_chain_datum_tx_t *a_datum, return true; } -json_object * dap_db_tx_history_to_json(dap_chain_hash_fast_t* a_tx_hash, +json_object * dap_db_tx_history_to_json(json_object* a_json_arr_reply, + dap_chain_hash_fast_t* a_tx_hash, dap_hash_fast_t * l_atom_hash, dap_chain_datum_tx_t * l_tx, dap_chain_t * a_chain, @@ -193,13 +195,14 @@ json_object * dap_db_tx_history_to_json(dap_chain_hash_fast_t* a_tx_hash, if(!brief_out) { - dap_chain_datum_dump_tx_json(l_tx,NULL,json_obj_datum,a_hash_out_type,a_tx_hash,a_chain->net_id); + dap_chain_datum_dump_tx_json(a_json_arr_reply, l_tx,NULL,json_obj_datum,a_hash_out_type,a_tx_hash,a_chain->net_id); } return json_obj_datum; } -json_object * dap_db_history_tx(dap_chain_hash_fast_t* a_tx_hash, +json_object * dap_db_history_tx(json_object* a_json_arr_reply, + dap_chain_hash_fast_t* a_tx_hash, dap_chain_t * a_chain, const char *a_hash_out_type, dap_chain_net_t * l_net) @@ -219,12 +222,12 @@ json_object * dap_db_history_tx(dap_chain_hash_fast_t* a_tx_hash, (dap_chain_datum_tx_t *)l_datum->data : NULL; if (l_tx) { - return dap_db_tx_history_to_json(a_tx_hash, &l_atom_hash,l_tx, a_chain, a_hash_out_type, l_net, l_ret_code, &accepted_tx, false); + return dap_db_tx_history_to_json(a_json_arr_reply, a_tx_hash, &l_atom_hash,l_tx, a_chain, a_hash_out_type, l_net, l_ret_code, &accepted_tx, false); } else { const char *l_tx_hash_str = dap_strcmp(a_hash_out_type, "hex") ? dap_enc_base58_encode_hash_to_str_static(a_tx_hash) : dap_chain_hash_fast_to_str_static(a_tx_hash); - dap_json_rpc_error_add(-1, "TX hash %s not founds in chains", l_tx_hash_str); + dap_json_rpc_error_add(a_json_arr_reply, -1, "TX hash %s not founds in chains", l_tx_hash_str); return NULL; } } @@ -301,14 +304,14 @@ static void s_tx_header_print(json_object* json_obj_datum, dap_chain_tx_hash_pro * @param a_hash_out_type * @return char* */ -json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, +json_object* dap_db_history_addr(json_object* a_json_arr_reply, dap_chain_addr_t *a_addr, dap_chain_t *a_chain, const char *a_hash_out_type, const char * l_addr_str, json_object *json_obj_summary, size_t a_limit, size_t a_offset, bool a_brief, const char *a_srv, dap_chain_tx_tag_action_type_t a_action, bool a_head) { json_object* json_obj_datum = json_object_new_array(); if (!json_obj_datum){ log_it(L_CRITICAL, "%s", c_error_memory_alloc); - dap_json_rpc_error_add(-44, "Memory allocation error"); + dap_json_rpc_error_add(a_json_arr_reply, -44, "Memory allocation error"); return NULL; } @@ -321,7 +324,7 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, dap_chain_net_t *l_net = dap_chain_net_by_id(a_chain->net_id); if (!l_net) { log_it(L_WARNING, "Can't find net by specified chain %s", a_chain->name); - dap_json_rpc_error_add(-1, "Can't find net by specified chain %s", a_chain->name); + dap_json_rpc_error_add(a_json_arr_reply, -1, "Can't find net by specified chain %s", a_chain->name); json_object_put(json_obj_datum); return NULL; } @@ -329,7 +332,7 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, const char *l_native_ticker = l_net->pub.native_ticker; if (!a_chain->callback_datum_iter_create) { log_it(L_WARNING, "Not defined callback_datum_iter_create for chain \"%s\"", a_chain->name); - dap_json_rpc_error_add(-1, "Not defined callback_datum_iter_create for chain \"%s\"", a_chain->name); + dap_json_rpc_error_add(a_json_arr_reply, -1, "Not defined callback_datum_iter_create for chain \"%s\"", a_chain->name); json_object_put(json_obj_datum); return NULL; } @@ -457,7 +460,7 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, json_object * j_arr_data = json_object_new_array(); json_object * j_obj_tx = json_object_new_object(); if (!j_obj_tx || !j_arr_data) { - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); json_object_put(j_obj_tx); json_object_put(j_arr_data); return NULL; @@ -578,7 +581,7 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, json_object * j_obj_data = json_object_new_object(); if (!j_obj_data) { - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); json_object_put(j_obj_tx); json_object_put(j_arr_data); return NULL; @@ -620,7 +623,7 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, json_object * j_obj_data = json_object_new_object(); if (!j_obj_data) { - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); json_object_put(j_obj_tx); json_object_put(j_arr_data); return NULL; @@ -667,7 +670,7 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, if (json_object_array_length(json_obj_datum) == 2) { json_object * json_empty_tx = json_object_new_object(); if (!json_empty_tx) { - dap_json_rpc_allocation_error; + dap_json_rpc_allocation_error(a_json_arr_reply); json_object_put(json_obj_datum); return NULL; } @@ -682,7 +685,7 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, return json_obj_datum; } -static int s_json_tx_history_pack(json_object** a_json_obj_datum, dap_chain_datum_t * a_datum, dap_chain_net_t *a_net, +static int s_json_tx_history_pack(json_object* a_json_arr_reply, json_object** a_json_obj_datum, dap_chain_datum_t * a_datum, dap_chain_net_t *a_net, dap_chain_t *a_chain, dap_chain_tx_tag_action_type_t a_action, const char *a_hash_out_type, bool a_out_brief, size_t* a_accepted, size_t* a_rejected, bool a_look_for_unknown_service, const char *a_srv) @@ -717,7 +720,7 @@ static int s_json_tx_history_pack(json_object** a_json_obj_datum, dap_chain_datu } bool accepted_tx; - *a_json_obj_datum = dap_db_tx_history_to_json(&l_ttx_hash, NULL, l_tx, a_chain, a_hash_out_type, a_net, 0, &accepted_tx, a_out_brief); + *a_json_obj_datum = dap_db_tx_history_to_json(a_json_arr_reply, &l_ttx_hash, NULL, l_tx, a_chain, a_hash_out_type, a_net, 0, &accepted_tx, a_out_brief); if (!*a_json_obj_datum) { log_it(L_CRITICAL, "%s", c_error_memory_alloc); return 2; @@ -731,7 +734,7 @@ static int s_json_tx_history_pack(json_object** a_json_obj_datum, dap_chain_datu } -json_object *dap_db_history_tx_all(dap_chain_t *a_chain, dap_chain_net_t *a_net, +json_object *dap_db_history_tx_all(json_object* a_json_arr_reply, dap_chain_t *a_chain, dap_chain_net_t *a_net, const char *a_hash_out_type, json_object *json_obj_summary, size_t a_limit, size_t a_offset, bool out_brief, const char *a_srv, dap_chain_tx_tag_action_type_t a_action, bool a_head) @@ -769,7 +772,7 @@ json_object *dap_db_history_tx_all(dap_chain_t *a_chain, dap_chain_net_t *a_net, l_count_tx++; continue; } - res = s_json_tx_history_pack(&json_tx_history, l_datums[i], a_net, a_chain, a_action, a_hash_out_type, out_brief, + res = s_json_tx_history_pack(a_json_arr_reply, &json_tx_history, l_datums[i], a_net, a_chain, a_action, a_hash_out_type, out_brief, &l_tx_ledger_accepted, &l_tx_ledger_rejected, look_for_unknown_service, a_srv); if (res == 1) continue; @@ -807,7 +810,7 @@ json_object *dap_db_history_tx_all(dap_chain_t *a_chain, dap_chain_net_t *a_net, l_count_tx++; continue; } - res = s_json_tx_history_pack(&json_tx_history, l_datums[i-1], a_net, a_chain, a_action, a_hash_out_type, out_brief, + res = s_json_tx_history_pack(a_json_arr_reply, &json_tx_history, l_datums[i-1], a_net, a_chain, a_action, a_hash_out_type, out_brief, &l_tx_ledger_accepted, &l_tx_ledger_rejected, look_for_unknown_service, a_srv); if (res == 1) continue; @@ -856,7 +859,7 @@ json_object *s_get_ticker(json_object *a_jobj_tickers, const char *a_token_ticke * @param a_token_num * @return char* */ -static json_object* dap_db_chain_history_token_list(dap_chain_t * a_chain, const char *a_token_name, const char *a_hash_out_type, size_t *a_token_num) +static json_object* dap_db_chain_history_token_list(json_object* a_json_arr_reply, dap_chain_t * a_chain, const char *a_token_name, const char *a_hash_out_type, size_t *a_token_num) { json_object *l_jobj_tickers = json_object_new_object(); if (!a_chain->callback_datum_iter_create) { @@ -899,7 +902,7 @@ static json_object* dap_db_chain_history_token_list(dap_chain_t * a_chain, const json_object* json_history_token = json_object_new_object(); json_object_object_add(json_history_token, "status", json_object_new_string(l_ret_code ? "DECLINED" : "ACCEPTED")); json_object_object_add(json_history_token, "Ledger return code", json_object_new_int(l_ret_code)); - dap_chain_datum_dump_json(json_history_token, l_datum, a_hash_out_type, a_chain->net_id); + dap_chain_datum_dump_json(a_json_arr_reply, json_history_token, l_datum, a_hash_out_type, a_chain->net_id); switch (l_token->type) { case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_SIMPLE: case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_PUBLIC: @@ -932,14 +935,14 @@ static json_object* dap_db_chain_history_token_list(dap_chain_t * a_chain, const * @return char* */ -static size_t dap_db_net_history_token_list(dap_chain_net_t * l_net, const char *a_token_name, const char *a_hash_out_type, json_object* a_obj_out) { +static size_t dap_db_net_history_token_list(json_object* a_json_arr_reply, dap_chain_net_t * l_net, const char *a_token_name, const char *a_hash_out_type, json_object* a_obj_out) { size_t l_token_num_total = 0; dap_chain_t *l_chain_cur; json_object* json_arr_obj_tx = json_object_new_array(); DL_FOREACH(l_net->pub.chains, l_chain_cur) { size_t l_token_num = 0; json_object* json_obj_tx = NULL; - json_obj_tx = dap_db_chain_history_token_list(l_chain_cur, a_token_name, a_hash_out_type, &l_token_num); + json_obj_tx = dap_db_chain_history_token_list(a_json_arr_reply, l_chain_cur, a_token_name, a_hash_out_type, &l_token_num); if(json_obj_tx) json_object_array_add(json_arr_obj_tx, json_obj_tx); l_token_num_total += l_token_num; @@ -960,7 +963,7 @@ static size_t dap_db_net_history_token_list(dap_chain_net_t * l_net, const char */ int com_ledger(int a_argc, char ** a_argv, void **reply) { - json_object ** json_arr_reply = (json_object **) reply; + json_object ** a_json_arr_reply = (json_object **) reply; enum { CMD_NONE, CMD_LIST, CMD_TX_INFO }; int arg_index = 1; const char *l_net_str = NULL; @@ -971,7 +974,7 @@ int com_ledger(int a_argc, char ** a_argv, void **reply) if(!l_hash_out_type) l_hash_out_type = "hex"; if(dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR, "invalid parameter -H, valid values: -H <hex | base58>"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR, "invalid parameter -H, valid values: -H <hex | base58>"); return DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR; } @@ -1005,13 +1008,13 @@ int com_ledger(int a_argc, char ** a_argv, void **reply) l_sub_cmd = SUB_CMD_LIST_LEDGER_THRESHOLD_WITH_HASH; if (dap_chain_hash_fast_from_str(l_tx_threshold_hash_str, &l_tx_threshold_hash)){ l_tx_hash_str = NULL; - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_TRESHOLD_ERR, "tx threshold hash not recognized"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_TRESHOLD_ERR, "tx threshold hash not recognized"); return DAP_CHAIN_NODE_CLI_COM_LEDGER_TRESHOLD_ERR; } } } if (l_sub_cmd == SUBCMD_NONE) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR, "Command 'list' requires subcommands 'coins' or 'threshold'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR, "Command 'list' requires subcommands 'coins' or 'threshold'"); return DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR; } dap_cli_server_cmd_find_option_val(a_argv, 0, a_argc, "-net", &l_net_str); @@ -1021,39 +1024,39 @@ int com_ledger(int a_argc, char ** a_argv, void **reply) size_t l_limit = l_limit_str ? strtoul(l_limit_str, NULL, 10) : 0; size_t l_offset = l_offset_str ? strtoul(l_offset_str, NULL, 10) : 0; if (l_net_str == NULL){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_NET_PARAM_ERR, "Command 'list' requires key -net"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_NET_PARAM_ERR, "Command 'list' requires key -net"); return DAP_CHAIN_NODE_CLI_COM_LEDGER_NET_PARAM_ERR; } dap_ledger_t *l_ledger = dap_ledger_by_net_name(l_net_str); if (l_ledger == NULL){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_LACK_ERR, "Can't get ledger for net %s", l_net_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_LACK_ERR, "Can't get ledger for net %s", l_net_str); return DAP_CHAIN_NODE_CLI_COM_LEDGER_LACK_ERR; } if (l_sub_cmd == SUB_CMD_LIST_LEDGER_THRESHOLD) { json_object* json_obj_out = dap_ledger_threshold_info(l_ledger, l_limit, l_offset, NULL, l_head); if (json_obj_out){ - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } return 0; } if (l_sub_cmd == SUB_CMD_LIST_LEDGER_THRESHOLD_WITH_HASH) { json_object *json_obj_out = dap_ledger_threshold_info(l_ledger, 0, 0, &l_tx_threshold_hash, l_head); if (json_obj_out){ - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } return 0; } if (l_sub_cmd == SUB_CMD_LIST_LEDGER_BALANCE) { json_object *json_obj_out = dap_ledger_balance_info(l_ledger, l_limit, l_offset, l_head); if (json_obj_out){ - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } return 0; } json_object *json_obj_datum = dap_ledger_token_info(l_ledger, l_limit, l_offset); if (json_obj_datum) { - json_object_array_add(*json_arr_reply, json_obj_datum); + json_object_array_add(*a_json_arr_reply, json_obj_datum); } return 0; } else if (l_cmd == CMD_TX_INFO){ @@ -1065,45 +1068,45 @@ int com_ledger(int a_argc, char ** a_argv, void **reply) bool l_unspent_flag = dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-unspent", NULL); //check input if (l_tx_hash_str == NULL){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR, "Subcommand 'info' requires key -hash"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR, "Subcommand 'info' requires key -hash"); return DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR; } if (l_net_str == NULL){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_NET_PARAM_ERR, "Subcommand 'info' requires key -net"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_NET_PARAM_ERR, "Subcommand 'info' requires key -net"); return DAP_CHAIN_NODE_CLI_COM_LEDGER_NET_PARAM_ERR; } dap_chain_net_t *l_net = dap_chain_net_by_name(l_net_str); if (!l_net) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_NET_FIND_ERR, "Can't find net %s", l_net_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_NET_FIND_ERR, "Can't find net %s", l_net_str); return DAP_CHAIN_NODE_CLI_COM_LEDGER_NET_FIND_ERR; } dap_chain_hash_fast_t *l_tx_hash = DAP_NEW(dap_chain_hash_fast_t); if (dap_chain_hash_fast_from_str(l_tx_hash_str, l_tx_hash)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_HASH_GET_ERR, "Can't get hash_fast from %s, check that the hash is correct", l_tx_hash_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_HASH_GET_ERR, "Can't get hash_fast from %s, check that the hash is correct", l_tx_hash_str); DAP_DEL_Z(l_tx_hash); return DAP_CHAIN_NODE_CLI_COM_LEDGER_HASH_GET_ERR; } dap_chain_datum_tx_t *l_datum_tx = dap_chain_net_get_tx_by_hash(l_net, l_tx_hash, l_unspent_flag ? TX_SEARCH_TYPE_NET_UNSPENT : TX_SEARCH_TYPE_NET); if (l_datum_tx == NULL) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_TX_HASH_ERR, "Can't find datum for transaction hash %s in chains", l_tx_hash_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_TX_HASH_ERR, "Can't find datum for transaction hash %s in chains", l_tx_hash_str); DAP_DEL_Z(l_tx_hash); return DAP_CHAIN_NODE_CLI_COM_LEDGER_TX_HASH_ERR; } json_object* json_datum = json_object_new_object(); - if (!s_dap_chain_datum_tx_out_data(l_datum_tx, l_net->pub.ledger, json_datum, l_hash_out_type, l_tx_hash)){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_TX_HASH_ERR, "Can't find transaction hash %s in ledger", l_tx_hash_str); + if (!s_dap_chain_datum_tx_out_data(*a_json_arr_reply,l_datum_tx, l_net->pub.ledger, json_datum, l_hash_out_type, l_tx_hash)){ + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_TX_HASH_ERR, "Can't find transaction hash %s in ledger", l_tx_hash_str); json_object_put(json_datum); DAP_DEL_Z(l_tx_hash); return DAP_CHAIN_NODE_CLI_COM_LEDGER_TX_HASH_ERR; } DAP_DEL_Z(l_tx_hash); if (json_datum){ - json_object_array_add(*json_arr_reply, json_datum); + json_object_array_add(*a_json_arr_reply, json_datum); } } else{ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR, "Command 'ledger' requires parameter 'list' or 'info'", l_tx_hash_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR, "Command 'ledger' requires parameter 'list' or 'info'", l_tx_hash_str); return DAP_CHAIN_NODE_CLI_COM_LEDGER_PARAM_ERR; } return 0; @@ -1121,7 +1124,7 @@ int com_ledger(int a_argc, char ** a_argv, void **reply) */ int com_token(int a_argc, char ** a_argv, void **a_str_reply) { - json_object **json_arr_reply = (json_object **)a_str_reply; + json_object **a_json_arr_reply = (json_object **)a_str_reply; enum { CMD_NONE, CMD_LIST, CMD_INFO, CMD_TX }; int arg_index = 1; const char *l_net_str = NULL; @@ -1132,18 +1135,18 @@ int com_token(int a_argc, char ** a_argv, void **a_str_reply) if (!l_hash_out_type) l_hash_out_type = "hex"; if (dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR, "invalid parameter -H, valid values: -H <hex | base58>"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR, "invalid parameter -H, valid values: -H <hex | base58>"); return -DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR; } dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-net", &l_net_str); // Select chain network if(!l_net_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR, "command requires parameter '-net'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR, "command requires parameter '-net'"); return -DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR; } else { if((l_net = dap_chain_net_by_name(l_net_str)) == NULL) { // Can't find such network - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR, "command requires parameter '-net' to be valid chain network name"); return -DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR; } @@ -1159,11 +1162,11 @@ int com_token(int a_argc, char ** a_argv, void **a_str_reply) // token list if(l_cmd == CMD_LIST) { json_object* json_obj_tx = json_object_new_object(); - size_t l_total_all_token = dap_db_net_history_token_list(l_net, NULL, l_hash_out_type, json_obj_tx); + size_t l_total_all_token = dap_db_net_history_token_list(*a_json_arr_reply, l_net, NULL, l_hash_out_type, json_obj_tx); json_object_object_length(json_obj_tx); json_object_object_add(json_obj_tx, "tokens", json_object_new_uint64(l_total_all_token)); - json_object_array_add(*json_arr_reply, json_obj_tx); + json_object_array_add(*a_json_arr_reply, json_obj_tx); return 0; } // token info @@ -1171,20 +1174,20 @@ int com_token(int a_argc, char ** a_argv, void **a_str_reply) const char *l_token_name_str = NULL; dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-name", &l_token_name_str); if(!l_token_name_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR, "command requires parameter '-name' <token name>"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR, "command requires parameter '-name' <token name>"); return -DAP_CHAIN_NODE_CLI_COM_TOKEN_PARAM_ERR; } json_object *json_obj_tx = json_object_new_object(); - if (!dap_db_net_history_token_list(l_net, l_token_name_str, l_hash_out_type, json_obj_tx)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TOKEN_FOUND_ERR, "token '%s' not found\n", l_token_name_str);\ + if (!dap_db_net_history_token_list(*a_json_arr_reply, l_net, l_token_name_str, l_hash_out_type, json_obj_tx)) { + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TOKEN_FOUND_ERR, "token '%s' not found\n", l_token_name_str);\ return -DAP_CHAIN_NODE_CLI_COM_TOKEN_UNKNOWN; } - json_object_array_add(*json_arr_reply, json_obj_tx); + json_object_array_add(*a_json_arr_reply, json_obj_tx); return DAP_CHAIN_NODE_CLI_COM_TOKEN_OK; } // command tx history else if(l_cmd == CMD_TX) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TOKEN_UNKNOWN, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TOKEN_UNKNOWN, "The cellframe-node-cli token tx command is deprecated and no longer supported.\n"); return DAP_CHAIN_NODE_CLI_COM_TOKEN_UNKNOWN; @@ -1325,7 +1328,7 @@ int com_token(int a_argc, char ** a_argv, void **a_str_reply) #endif } - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_TOKEN_UNKNOWN, "unknown command code %d", l_cmd); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_TOKEN_UNKNOWN, "unknown command code %d", l_cmd); return -DAP_CHAIN_NODE_CLI_COM_TOKEN_UNKNOWN; } diff --git a/modules/net/include/dap_chain_node_cli_cmd.h b/modules/net/include/dap_chain_node_cli_cmd.h index bf894e4123..88401c7511 100644 --- a/modules/net/include/dap_chain_node_cli_cmd.h +++ b/modules/net/include/dap_chain_node_cli_cmd.h @@ -31,7 +31,7 @@ #include "dap_chain_node_cli.h" #include "json.h" -int dap_chain_node_cli_cmd_values_parse_net_chain_for_json(int *a_arg_index, int a_argc, +int dap_chain_node_cli_cmd_values_parse_net_chain_for_json(json_object* a_json_arr_reply, int *a_arg_index, int a_argc, char **a_argv, dap_chain_t **a_chain, dap_chain_net_t **a_net, dap_chain_type_t a_default_chain_type); 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 be6bb5f251..cc04507543 100644 --- a/modules/net/include/dap_chain_node_cli_cmd_tx.h +++ b/modules/net/include/dap_chain_node_cli_cmd_tx.h @@ -40,12 +40,13 @@ void s_dap_chain_tx_hash_processed_ht_free(dap_chain_tx_hash_processed_ht_t **l_ * * return history json */ -json_object * dap_db_history_tx(dap_chain_hash_fast_t* a_tx_hash, dap_chain_t * a_chain, const char *a_hash_out_type, dap_chain_net_t * l_net); -json_object * dap_db_history_addr(dap_chain_addr_t * a_addr, dap_chain_t * a_chain, const char *a_hash_out_type, const char * l_addr_str, json_object *json_obj_summary, size_t a_limit, size_t a_offset, +json_object * dap_db_history_tx(json_object* a_json_arr_reply, dap_chain_hash_fast_t* a_tx_hash, dap_chain_t * a_chain, const char *a_hash_out_type, dap_chain_net_t * l_net); +json_object * dap_db_history_addr(json_object* a_json_arr_reply, dap_chain_addr_t * a_addr, dap_chain_t * a_chain, const char *a_hash_out_type, const char * l_addr_str, json_object *json_obj_summary, size_t a_limit, size_t a_offset, bool a_brief, const char *a_srv, dap_chain_tx_tag_action_type_t a_action, bool a_head); -json_object * dap_db_tx_history_to_json(dap_chain_hash_fast_t* a_tx_hash, +json_object * dap_db_tx_history_to_json(json_object* a_json_arr_reply, + dap_chain_hash_fast_t* a_tx_hash, dap_hash_fast_t * l_atom_hash, dap_chain_datum_tx_t * l_tx, dap_chain_t * a_chain, @@ -55,13 +56,14 @@ json_object * dap_db_tx_history_to_json(dap_chain_hash_fast_t* a_tx_hash, bool *accepted_tx, bool out_brief); -json_object *dap_db_history_tx_all(dap_chain_t *l_chain, dap_chain_net_t *l_net, +json_object *dap_db_history_tx_all(json_object* a_json_arr_reply, dap_chain_t *l_chain, dap_chain_net_t *l_net, const char *l_hash_out_type, json_object *json_obj_summary, size_t a_limit, size_t a_offset, bool out_brief, const char *a_srv, dap_chain_tx_tag_action_type_t a_action, bool a_head); -bool s_dap_chain_datum_tx_out_data(dap_chain_datum_tx_t *a_datum, +bool s_dap_chain_datum_tx_out_data(json_object* a_json_arr_reply, + dap_chain_datum_tx_t *a_datum, dap_ledger_t *a_ledger, json_object * json_obj_out, const char *a_hash_out_type, diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c index a0feca9322..5e2e7be22d 100644 --- a/modules/type/blocks/dap_chain_cs_blocks.c +++ b/modules/type/blocks/dap_chain_cs_blocks.c @@ -540,7 +540,7 @@ static void s_print_autocollect_table(dap_chain_net_t *a_net, json_object *a_jso */ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) { - json_object **json_arr_reply = (json_object **)a_str_reply; + json_object **a_json_arr_reply = (json_object **)a_str_reply; //char ** a_str_reply = (char **) reply; enum { SUBCMD_UNDEFINED =0, @@ -590,13 +590,13 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) dap_chain_net_t * l_net = NULL; // Parse default values - if (dap_chain_node_cli_cmd_values_parse_net_chain_for_json(&arg_index, a_argc, a_argv, &l_chain, &l_net, CHAIN_TYPE_TX)) + if (dap_chain_node_cli_cmd_values_parse_net_chain_for_json(*a_json_arr_reply, &arg_index, a_argc, a_argv, &l_chain, &l_net, CHAIN_TYPE_TX)) return -DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; const char *l_chain_type = dap_chain_get_cs_type(l_chain); if (!strstr(l_chain_type, "block_") && strcmp(l_chain_type, "esbocs")){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CHAIN_TYPE_ERR, "Type of chain %s is not block. This chain with type %s is not supported by this command", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CHAIN_TYPE_ERR, "Type of chain %s is not block. This chain with type %s is not supported by this command", l_chain->name, l_chain_type); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CHAIN_TYPE_ERR; } @@ -640,7 +640,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) s_cli_parse_cmd_hash(a_argv,arg_index,a_argc,a_str_reply,"-datum", &l_datum_hash ); l_blocks->block_new_size=dap_chain_block_datum_del_by_hash( &l_blocks->block_new, l_blocks->block_new_size, &l_datum_hash ); }else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_DATUM_DEL_ERR, "Error! Can't delete datum from hash because no forming new block! Check pls you role, it must be MASTER NODE or greater"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_DATUM_DEL_ERR, "Error! Can't delete datum from hash because no forming new block! Check pls you role, it must be MASTER NODE or greater"); ret = DAP_CHAIN_NODE_CLI_COM_BLOCK_DATUM_DEL_ERR; } pthread_rwlock_unlock( &PVT(l_blocks)->rwlock ); @@ -652,7 +652,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) sizeof(dap_chain_datum_t*)*l_datums_count); if (!l_datums) { log_it(L_CRITICAL, "%s", c_error_memory_alloc); - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_MEMORY_ERR, "Out of memory in s_cli_blocks"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_MEMORY_ERR, "Out of memory in s_cli_blocks"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_MEMORY_ERR; } size_t l_datum_size = 0; @@ -663,7 +663,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) for (size_t i = 0; i < l_datums_count; i++) { bool l_err = dap_chain_node_mempool_process(l_chain, l_datums[i], l_subcmd_str_arg); if (l_err) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_VERIF_ERR, "Error! Datum %s doesn't pass verifications, examine node log files", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_VERIF_ERR, "Error! Datum %s doesn't pass verifications, examine node log files", l_subcmd_str_arg); ret = DAP_CHAIN_NODE_CLI_COM_BLOCK_VERIF_ERR; } else @@ -673,7 +673,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) break; } json_object* json_obj_out = json_object_new_string("All datums processed"); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); ret = DAP_CHAIN_NODE_CLI_COM_BLOCK_OK; DAP_DEL_Z(l_datums); DAP_DELETE(l_gdb_group_mempool); @@ -694,17 +694,17 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) if(!l_hash_out_type) l_hash_out_type = "hex"; if(dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "invalid parameter -H, valid values: -H <hex | base58>"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "invalid parameter -H, valid values: -H <hex | base58>"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } if (!l_subcmd_str_arg) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_HASH_ERR, "Enter block hash "); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_HASH_ERR, "Enter block hash "); return DAP_CHAIN_NODE_CLI_COM_BLOCK_HASH_ERR; } dap_chain_hash_fast_from_str(l_subcmd_str_arg, &l_block_hash); // Convert argument to hash dap_chain_block_cache_t *l_block_cache = dap_chain_block_cache_get_by_hash(l_blocks, &l_block_hash); if (!l_block_cache) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_FIND_ERR, "Can't find block %s ", l_subcmd_str_arg); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_FIND_ERR, "Can't find block %s ", l_subcmd_str_arg); return DAP_CHAIN_NODE_CLI_COM_BLOCK_FIND_ERR; } dap_chain_block_t *l_block = l_block_cache->block; @@ -728,7 +728,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) size_t l_offset = 0; json_object_object_add(json_obj_inf, "Metadata: count", json_object_new_int(l_block->hdr.meta_count)); json_object* json_arr_meta_out = json_object_new_array(); - json_object_array_add(*json_arr_reply, json_obj_inf); + json_object_array_add(*a_json_arr_reply, json_obj_inf); for (uint32_t i=0; i < l_block->hdr.meta_count; i++) { json_object* json_obj_meta = json_object_new_object(); dap_chain_block_meta_t *l_meta = (dap_chain_block_meta_t *)(l_block->meta_n_datum_n_sign + l_offset); @@ -763,10 +763,10 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) json_object_array_add(json_arr_meta_out, json_obj_meta); l_offset += sizeof(l_meta->hdr) + l_meta->hdr.data_size; } - json_object_array_add(*json_arr_reply, json_arr_meta_out); + json_object_array_add(*a_json_arr_reply, json_arr_meta_out); json_object* json_obj_datum = json_object_new_object(); json_object_object_add(json_obj_datum, "Datums: count", json_object_new_uint64(l_block_cache->datum_count)); - json_object_array_add(*json_arr_reply, json_obj_datum); + json_object_array_add(*a_json_arr_reply, json_obj_datum); json_object* json_arr_datum_out = json_object_new_array(); for (uint32_t i=0; i < l_block_cache->datum_count ; i++){ json_object* json_obj_tx = json_object_new_object(); @@ -774,7 +774,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) size_t l_datum_size = dap_chain_datum_size(l_datum); json_object_object_add(json_obj_tx, "datum size ",json_object_new_uint64(l_datum_size)); if (l_datum_size < sizeof (l_datum->header) ){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_DATUM_SIZE_ERR, "ERROR: datum size %zu is smaller than header size %zu \n",l_datum_size, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_DATUM_SIZE_ERR, "ERROR: datum size %zu is smaller than header size %zu \n",l_datum_size, sizeof (l_datum->header)); break; } @@ -787,15 +787,15 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) dap_time_to_str_rfc822(l_time_buf, DAP_TIME_STR_SIZE, l_datum->header.ts_create); json_object_object_add(json_obj_tx, "ts_create",json_object_new_string(l_time_buf)); json_object_object_add(json_obj_tx, "data_size",json_object_new_int(l_datum->header.data_size)); - dap_chain_datum_dump_json(json_obj_tx,l_datum,l_hash_out_type,l_net->pub.id); + dap_chain_datum_dump_json(a_json_arr_reply, json_obj_tx,l_datum,l_hash_out_type,l_net->pub.id); json_object_array_add(json_arr_datum_out, json_obj_tx); } // Signatures - json_object_array_add(*json_arr_reply, json_arr_datum_out); + json_object_array_add(*a_json_arr_reply, json_arr_datum_out); // Signatures json_object* json_obj_sig = json_object_new_object(); json_object_object_add(json_obj_sig, "signatures count", json_object_new_uint64(l_block_cache->sign_count)); - json_object_array_add(*json_arr_reply, json_obj_sig); + json_object_array_add(*a_json_arr_reply, json_obj_sig); json_object* json_arr_sign_out = json_object_new_array(); for (uint32_t i=0; i < l_block_cache->sign_count ; i++) { json_object* json_obj_sign = json_object_new_object(); @@ -810,7 +810,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) json_object_object_add(json_obj_sign, "pkey_hash",json_object_new_string(l_pkey_hash_str)); json_object_array_add(json_arr_sign_out, json_obj_sign); } - json_object_array_add(*json_arr_reply, json_arr_sign_out); + json_object_array_add(*a_json_arr_reply, json_arr_sign_out); } break; case SUBCMD_LIST:{ @@ -836,28 +836,28 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) size_t l_limit = l_limit_str ? strtoul(l_limit_str, NULL, 10) : 0; if (l_signed_flag && l_first_signed_flag) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Choose only one option from 'singed' and 'first_signed'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Choose only one option from 'singed' and 'first_signed'"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } if ((l_signed_flag || l_first_signed_flag) && !l_cert_name && !l_pkey_hash_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Option from '%s' requires parameter '-cert' or 'pkey_hash'", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Option from '%s' requires parameter '-cert' or 'pkey_hash'", l_first_signed_flag ? "first_signed" : "signed"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } if (l_cert_name) { dap_cert_t *l_cert = dap_cert_find_by_name(l_cert_name); if (!l_cert) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR, "Can't find \"%s\" certificate", l_cert_name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR, "Can't find \"%s\" certificate", l_cert_name); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR; } l_pub_key = dap_pkey_from_enc_key(l_cert->enc_key); if (!l_pub_key) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PUB_KEY_ERR, "Corrupted certificate \"%s\" have no public key data", l_cert_name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PUB_KEY_ERR, "Corrupted certificate \"%s\" have no public key data", l_cert_name); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PUB_KEY_ERR; } } else if (l_pkey_hash_str) { if (dap_chain_hash_fast_from_str(l_pkey_hash_str, &l_pkey_hash)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert \"%s\" to hash", l_pkey_hash_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert \"%s\" to hash", l_pkey_hash_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR; } } @@ -868,13 +868,13 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) if (l_from_hash_str) { if (dap_chain_hash_fast_from_str(l_from_hash_str, &l_from_hash)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert \"%s\" to hash", l_from_hash_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert \"%s\" to hash", l_from_hash_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR; } } if (l_to_hash_str) { if (dap_chain_hash_fast_from_str(l_to_hash_str, &l_to_hash)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert \"%s\" to hash", l_to_hash_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert \"%s\" to hash", l_to_hash_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR; } } @@ -882,14 +882,14 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) if (l_from_date_str) { l_from_time = dap_time_from_str_simplified(l_from_date_str); if (!l_from_time) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert \"%s\" to date", l_from_date_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert \"%s\" to date", l_from_date_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR; } } if (l_to_date_str) { l_to_time = dap_time_from_str_simplified(l_to_date_str); if (!l_to_time) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert \"%s\" to date", l_to_date_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert \"%s\" to date", l_to_date_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR; } struct tm *l_localtime = localtime((time_t *)&l_to_time); @@ -984,7 +984,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) break; } pthread_rwlock_unlock(&PVT(l_blocks)->rwlock); - json_object_array_add(*json_arr_reply, json_arr_bl_cache_out); + json_object_array_add(*a_json_arr_reply, json_arr_bl_cache_out); char *l_filtered_criteria = "none"; json_object* json_obj_out = json_object_new_object(); @@ -993,7 +993,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) char *l_key = dap_strdup_printf("%s.%s with filter - %s, have blocks",l_net->pub.name,l_chain->name,l_filtered_criteria); json_object_object_add(json_obj_out, l_key, json_object_new_uint64(i_tmp)); DAP_DELETE(l_key); - json_object_array_add(*json_arr_reply,json_obj_out); + json_object_array_add(*a_json_arr_reply,json_obj_out); } break; case SUBCMD_LAST: { json_object* json_obj_out = json_object_new_object(); @@ -1008,14 +1008,14 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) char *l_key = dap_strdup_printf("%s.%s has blocks", l_net->pub.name, l_chain->name); json_object_object_add(json_obj_out, l_key, json_object_new_uint64(PVT(l_blocks)->blocks_count)); DAP_DELETE(l_key); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } break; case SUBCMD_FIND: { const char* l_datum_hash_str = NULL; json_object* json_obj_out = json_object_new_object(); dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-datum", &l_datum_hash_str); if (!l_datum_hash_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'event find' requires parameter '-datum'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'event find' requires parameter '-datum'"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } dap_hash_fast_t l_datum_hash = {}; @@ -1037,14 +1037,14 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) pthread_rwlock_unlock(&PVT(l_blocks)->datums_rwlock); json_object_object_add(json_obj_out, "Blocks", json_arr_bl_cache_out); json_object_object_add(json_obj_out, "Total",json_object_new_int(l_atoms_cnt)); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } break; case SUBCMD_COUNT: { json_object* json_obj_out = json_object_new_object(); char *l_key = dap_strdup_printf("%s.%s has blocks - ", l_net->pub.name,l_chain->name); json_object_object_add(json_obj_out, l_key, json_object_new_uint64(PVT(l_blocks)->blocks_count)); DAP_DELETE(l_key); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } break; @@ -1063,7 +1063,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) if (l_subcmd == SUBCMD_FEE) { if (dap_cli_server_cmd_check_option(a_argv, arg_index, a_argc, "collect") == -1) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block fee' requires subcommand 'collect'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block fee' requires subcommand 'collect'"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } } else { // l_sumcmd == SUBCMD_REWARD @@ -1071,36 +1071,36 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) const char *l_value_str = NULL; dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-poa_cert", &l_cert_name); if(!l_cert_name) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block reward set' requires parameter '-poa_cert'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block reward set' requires parameter '-poa_cert'"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } dap_cert_t *l_cert = dap_cert_find_by_name(l_cert_name); if (!l_cert) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR, "Can't find \"%s\" certificate", l_cert_name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR, "Can't find \"%s\" certificate", l_cert_name); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR; } if (!l_cert->enc_key || !l_cert->enc_key->priv_key_data || !l_cert->enc_key->priv_key_data_size) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PVT_KEY_ERR, "Certificate \"%s\" doesn't contains private key", l_cert_name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PVT_KEY_ERR, "Certificate \"%s\" doesn't contains private key", l_cert_name); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PVT_KEY_ERR; } dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-value", &l_value_str); uint256_t l_value = dap_chain_balance_scan(l_value_str); if (!l_value_str || IS_ZERO_256(l_value)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block reward set' requires parameter '-value' to be valid 256-bit unsigned integer"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block reward set' requires parameter '-value' to be valid 256-bit unsigned integer"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } char *l_decree_hash_str = s_blocks_decree_set_reward(l_net, l_chain, l_value, l_cert); if (l_decree_hash_str) { - //dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_OK, "Decree with hash %s created to set basic block sign reward", l_decree_hash_str); + //dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_OK, "Decree with hash %s created to set basic block sign reward", l_decree_hash_str); json_object* json_obj_out = json_object_new_object(); char *l_val = dap_strdup_printf("Decree with hash %s created to set basic block sign reward", l_decree_hash_str); DAP_DELETE(l_decree_hash_str); json_object_object_add(json_obj_out, "status", json_object_new_string(l_val)); DAP_DELETE(l_val); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_SIGN_ERR, "Basic block sign reward setting failed. Examine log file for details"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_SIGN_ERR, "Basic block sign reward setting failed. Examine log file for details"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_SIGN_ERR; } break; @@ -1111,10 +1111,10 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) char *l_val = dap_strdup_printf("Current base block reward is %s\n", l_reward_str); json_object_object_add(json_obj_out, "status", json_object_new_string(l_val)); DAP_DELETE(l_val); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); break; } else if (dap_cli_server_cmd_check_option(a_argv, arg_index, a_argc, "collect") == -1) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block reward' requires subcommands 'set' or 'show' or 'collect'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block reward' requires subcommands 'set' or 'show' or 'collect'"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } } @@ -1124,7 +1124,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) if(!l_hash_out_type) l_hash_out_type = "hex"; if(dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "invalid parameter -H, valid values: -H <hex | base58>"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "invalid parameter -H, valid values: -H <hex | base58>"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } @@ -1136,42 +1136,42 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-fee", &l_fee_value_str); if (!l_addr_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block %s collect' requires parameter '-addr'", l_subcmd_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block %s collect' requires parameter '-addr'", l_subcmd_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } l_addr = dap_chain_addr_from_str(l_addr_str); if(!l_cert_name) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block %s collect' requires parameter '-cert'", l_subcmd_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block %s collect' requires parameter '-cert'", l_subcmd_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } dap_cert_t *l_cert = dap_cert_find_by_name(l_cert_name); if (!l_cert) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR, "Can't find \"%s\" certificate", l_cert_name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR, "Can't find \"%s\" certificate", l_cert_name); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR; } if (!l_cert->enc_key || !l_cert->enc_key->priv_key_data || !l_cert->enc_key->priv_key_data_size) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR, "Certificate \"%s\" doesn't contains private key", l_cert_name); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR; } if (!l_fee_value_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block %s collect' requires parameter '-fee'", l_subcmd_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block %s collect' requires parameter '-fee'", l_subcmd_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } l_fee_value = dap_chain_balance_scan(l_fee_value_str); if (!l_fee_value_str || IS_ZERO_256(l_fee_value)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block %s collect' requires parameter '-fee' to be valid uint256", l_subcmd_str); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block %s collect' requires parameter '-fee' to be valid uint256", l_subcmd_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } if (!l_hash_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block fee collect' requires parameter '-hashes'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block fee collect' requires parameter '-hashes'"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } // NOTE: This call will modify source string l_block_list = s_block_parse_str_list((char *)l_hash_str, &l_hashes_count, l_chain); if (!l_block_list || !l_hashes_count) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_HASH_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_HASH_ERR, "Block fee collection requires at least one hash to create a transaction"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_HASH_ERR; } @@ -1184,10 +1184,10 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) char *l_val = dap_strdup_printf(l_val, "TX for %s collection created successfully, hash = %s\n", l_subcmd_str, l_hash_tx); json_object_object_add(json_obj_out, "status", json_object_new_string(l_val)); DAP_DELETE(l_val); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); DAP_DELETE(l_hash_tx); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_HASH_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_HASH_ERR, "Can't create %s collect TX\n", l_subcmd_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_HASH_ERR; } @@ -1201,36 +1201,36 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) if (dap_cli_server_cmd_check_option(a_argv, arg_index,a_argc, "renew") > 0) { dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-cert", &l_cert_name); if(!l_cert_name) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block autocollect renew' requires parameter '-cert'", l_subcmd_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } dap_cert_t *l_cert = dap_cert_find_by_name(l_cert_name); if (!l_cert) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR, "Can't find \"%s\" certificate", l_cert_name); return DAP_CHAIN_NODE_CLI_COM_BLOCK_CERT_ERR; } dap_pkey_t *l_pub_key = dap_pkey_from_enc_key(l_cert->enc_key); if (!l_pub_key) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PUB_KEY_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PUB_KEY_ERR, "Corrupted certificate \"%s\" have no public key data", l_cert_name); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PUB_KEY_ERR; } dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-addr", &l_addr_str); if (!l_addr_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block autocollect renew' requires parameter '-addr'", l_subcmd_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } dap_chain_addr_t *l_addr = dap_chain_addr_from_str(l_addr_str); if (!l_addr) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_CONVERT_ERR, "Can't convert sring %s to wallet address", l_addr_str); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } if (l_addr->net_id.uint64 != l_net->pub.id.uint64) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_NET_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_NET_ERR, "Wallet address should be from the collecting network"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_NET_ERR; } @@ -1312,21 +1312,21 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) json_object_array_add(json_arr_bl_out, json_obj_bl); l_block_count++; } - json_object_array_add(*json_arr_reply, json_arr_bl_out); + json_object_array_add(*a_json_arr_reply, json_arr_bl_out); json_object* json_obj_out = json_object_new_object(); char *l_val = dap_strdup_printf("%s.%s: Have %"DAP_UINT64_FORMAT_U" blocks\n", l_net->pub.name, l_chain->name, l_block_count); json_object_object_add(json_obj_out, "status", json_object_new_string(l_val)); DAP_DELETE(l_val); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } else { if (dap_cli_server_cmd_check_option(a_argv, arg_index, a_argc, "status") == -1) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR, "Command 'block autocollect' requires subcommand 'status'"); return DAP_CHAIN_NODE_CLI_COM_BLOCK_PARAM_ERR; } json_object* json_obj_out = json_object_new_object(); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); bool l_status = dap_chain_esbocs_get_autocollect_status(l_net->pub.id); char *l_val = dap_strdup_printf("for network %s is %s\n", l_net->pub.name, l_status ? "active" : "inactive cause of the network config or consensus starting problems"); @@ -1345,7 +1345,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) char *l_val = dap_strdup_printf("Undefined block subcommand \"%s\" ", l_subcmd_str); json_object_object_add(json_obj_out, "status", json_object_new_string(l_val)); DAP_DELETE(l_val); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); ret = DAP_CHAIN_NODE_CLI_COM_BLOCK_UNKNOWN; } break; diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index 261d64f99f..969ea0f217 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -1323,7 +1323,7 @@ static void s_json_dag_pack_event(json_object * a_json_out, dap_chain_cs_dag_eve */ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) { - json_object **json_arr_reply = (json_object **)a_str_reply; + json_object **a_json_arr_reply = (json_object **)a_str_reply; enum { SUBCMD_EVENT_LIST, SUBCMD_EVENT_DUMP, @@ -1359,11 +1359,11 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) if(!l_hash_out_type) l_hash_out_type = "hex"; if(dap_strcmp(l_hash_out_type,"hex") && dap_strcmp(l_hash_out_type,"base58")) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR,"invalid parameter -H, valid values: -H <hex | base58>"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR,"invalid parameter -H, valid values: -H <hex | base58>"); return -DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR; } - if(dap_chain_node_cli_cmd_values_parse_net_chain_for_json(&arg_index, argc, argv, &l_chain, &l_net,CHAIN_TYPE_TX) < 0) + if(dap_chain_node_cli_cmd_values_parse_net_chain_for_json(a_json_arr_reply, &arg_index, argc, argv, &l_chain, &l_net,CHAIN_TYPE_TX) < 0) return -DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR; if ((l_net == NULL) || (l_chain == NULL)){ @@ -1374,7 +1374,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) 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", + dap_json_rpc_error_add(*a_json_arr_reply, 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); return -DAP_CHAIN_NODE_CLI_COM_DAG_CHAIN_TYPE_ERR; } @@ -1412,7 +1412,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) 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_hash) ) !=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", + dap_json_rpc_error_add(*a_json_arr_reply, 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; break; @@ -1449,7 +1449,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) // Cleaning up dap_global_db_objs_delete(l_objs, l_objs_size); - json_object_array_add(*json_arr_reply, json_obj_round); + json_object_array_add(*a_json_arr_reply, json_obj_round); // Spread new mempool changes and dag events in network - going to SYNC_ALL // dap_chain_net_sync_all(l_net); @@ -1464,14 +1464,14 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) l_datum_in_hash = dap_enc_base58_to_hex_str_from_str(l_datum_hash_str); } } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR,"The -datum option was not specified, so " + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR,"The -datum option was not specified, so " "no datum is known to look for in rounds.\n"); return 0; } dap_hash_fast_t l_datum_hash = {0}; dap_chain_hash_fast_from_str(l_datum_in_hash, &l_datum_hash); if (dap_hash_fast_is_blank(&l_datum_hash)) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR,"The -datum parameter is not a valid hash.\n"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR,"The -datum parameter is not a valid hash.\n"); return 0; } size_t l_objs_size = 0; @@ -1569,7 +1569,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(*a_json_arr_reply, 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) { @@ -1582,7 +1582,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(*a_json_arr_reply, 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) { @@ -1594,12 +1594,12 @@ 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(*a_json_arr_reply, 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, + dap_json_rpc_error_add(*a_json_arr_reply, 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); break; @@ -1660,7 +1660,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_sign_t * l_sign =(dap_sign_t *) (l_event->hashes_n_datum_n_signs +l_offset); size_t l_sign_size = dap_sign_get_size(l_sign); if (l_sign_size == 0 ){ - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_SIGN_ERR," wrong sign size 0, stop parsing headers"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_SIGN_ERR," wrong sign size 0, stop parsing headers"); break; } dap_chain_hash_fast_t l_pkey_hash; @@ -1674,12 +1674,12 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) l_offset += l_sign_size; } - dap_chain_datum_dump_json(json_obj_event, l_datum, l_hash_out_type, l_net->pub.id); - json_object_array_add(*json_arr_reply, json_obj_event); + dap_chain_datum_dump_json(a_json_arr_reply, json_obj_event, l_datum, l_hash_out_type, l_net->pub.id); + json_object_array_add(*a_json_arr_reply, json_obj_event); ret=0; }else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR,"Can't find event 0x%s in the new forming round ", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_FIND_ERR,"Can't find event 0x%s in the new forming round ", l_event_hash_str); ret=-10; } @@ -1722,10 +1722,10 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_global_db_objs_delete(l_objs, l_objs_count); ret = 0; } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_GLOBALDB_ERR, "%s.%s: Error! No GlobalDB group!\n", l_net->pub.name, l_chain->name); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_GLOBALDB_ERR, "%s.%s: Error! No GlobalDB group!\n", l_net->pub.name, l_chain->name); ret = -2; } - json_object_array_add(*json_arr_reply, json_obj_event_list); + json_object_array_add(*a_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); size_t l_arr_start = 0; @@ -1764,7 +1764,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(*a_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; @@ -1801,10 +1801,10 @@ 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(*a_json_arr_reply, json_obj_event_list); }else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_UNDEF_ERR, "Undefined events source for listing "); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_UNDEF_ERR, "Undefined events source for listing "); ret=-14; } @@ -1823,7 +1823,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) size_t l_event_treshold_count = HASH_COUNT(PVT(l_dag)->events_treshold); json_object_object_add(json_obj_event_count,"atom in events", json_object_new_uint64(l_event_count)); json_object_object_add(json_obj_event_count,"atom in threshold", json_object_new_uint64(l_event_treshold_count)); - json_object_array_add(*json_arr_reply, json_obj_event_count); + json_object_array_add(*a_json_arr_reply, json_obj_event_count); } break; case SUBCMD_EVENT_LAST:{ json_object * json_obj_out = json_object_new_object(); @@ -1842,14 +1842,14 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) size_t l_event_count = HASH_COUNT(PVT(l_dag)->events); sprintf(l_tmp_buff,"%s.%s has events", l_net->pub.name, l_chain->name); json_object_object_add(json_obj_out, l_tmp_buff, json_object_new_uint64(l_event_count)); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } break; case SUBCMD_EVENT_FIND:{ const char* l_datum_hash_str = NULL; json_object* json_obj_out = json_object_new_object(); dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-datum", &l_datum_hash_str); if (!l_datum_hash_str) { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR, "Command 'event find' requires parameter '-datum'"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR, "Command 'event find' requires parameter '-datum'"); ret = DAP_CHAIN_NODE_CLI_COM_DAG_PARAM_ERR; } dap_hash_fast_t l_datum_hash = {}; @@ -1873,7 +1873,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) pthread_mutex_unlock(&PVT(l_dag)->events_mutex); json_object_object_add(json_obj_out, "Events", json_arr_bl_cache_out); json_object_object_add(json_obj_out, "Total",json_object_new_int(l_atoms_cnt)); - json_object_array_add(*json_arr_reply, json_obj_out); + json_object_array_add(*a_json_arr_reply, json_obj_out); } break; case SUBCMD_EVENT_SIGN: { // Sign event command json_object * json_obj_event_count = json_object_new_object(); @@ -1908,33 +1908,33 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) json_object_array_add(json_arr_obj_event, json_obj_sign); json_object_object_add(json_obj_event_count,"Added new sign with cert, event placed back in round.new", json_arr_obj_event); - json_object_array_add(*json_arr_reply, json_obj_event_count); + json_object_array_add(*a_json_arr_reply, json_obj_event_count); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_SIGN_ERR,"GDB Error: Can't place event %s with new sign back in round.new\n", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_SIGN_ERR,"GDB Error: Can't place event %s with new sign back in round.new\n", l_event_new_hash_base58_str ? l_event_new_hash_base58_str : l_event_new_hash_hex_str); ret = -DAP_CHAIN_NODE_CLI_COM_DAG_SIGN_ERR; } DAP_DELETE(l_event); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_SIGN_ERR,"Can't sign event %s in round.new\n", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_SIGN_ERR,"Can't sign event %s in round.new\n", l_event_hash_str); ret=-DAP_CHAIN_NODE_CLI_COM_DAG_SIGN_ERR; } } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_CERT_ERR,"No valid certificate provided for event %s signing\n", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_CERT_ERR,"No valid certificate provided for event %s signing\n", l_event_hash_str); ret = -DAP_CHAIN_NODE_CLI_COM_DAG_CERT_ERR; } DAP_DELETE(l_round_item); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_FIND_EVENT_ERR,"Can't find event %s in round.new - only place where could be signed the new event\n", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_FIND_EVENT_ERR,"Can't find event %s in round.new - only place where could be signed the new event\n", l_event_hash_str); ret = -DAP_CHAIN_NODE_CLI_COM_DAG_FIND_EVENT_ERR; } } break; case SUBCMD_UNDEFINED: { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_UNKNOWN,"Undefined event subcommand \"%s\" ", + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_UNKNOWN,"Undefined event subcommand \"%s\" ", l_event_cmd_str); ret=-DAP_CHAIN_NODE_CLI_COM_DAG_UNKNOWN; } @@ -1944,7 +1944,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) DAP_DEL_Z(l_event_hash_hex_str); DAP_DEL_Z(l_event_hash_base58_str); } else { - dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_COM_DAG_UNDEF_SUB_ERR,"Undefined subcommand"); + dap_json_rpc_error_add(*a_json_arr_reply, DAP_CHAIN_NODE_CLI_COM_DAG_UNDEF_SUB_ERR,"Undefined subcommand"); ret = -DAP_CHAIN_NODE_CLI_COM_DAG_UNDEF_SUB_ERR; } return ret; -- GitLab