diff --git a/modules/chain/include/dap_chain.h b/modules/chain/include/dap_chain.h index 6d8b28b553d89510c5cf8f1664d6d69c34d6a88b..c060a96726f8f3ff40d50f8750e1c29ba5c0739d 100644 --- a/modules/chain/include/dap_chain.h +++ b/modules/chain/include/dap_chain.h @@ -198,7 +198,7 @@ typedef struct dap_chain { // Iterator callbacks dap_chain_datum_callback_iter_create_t callback_datum_iter_create; dap_chain_datum_callback_iter_get_first_t callback_datum_iter_get_first; - dap_chain_datum_callback_iter_get_first_t callback_datum_iter_get_next; + dap_chain_datum_callback_iter_get_next_t callback_datum_iter_get_next; dap_chain_datum_callback_iter_delete_t callback_datum_iter_delete; dap_list_t *atom_notifiers; diff --git a/modules/channel/chain-net/dap_stream_ch_chain_net.c b/modules/channel/chain-net/dap_stream_ch_chain_net.c index 8707e576fc4d95f2835d7ae2d3482930d472b958..3ebf2d09cd2e6658c796a69cadf906a32a694d09 100644 --- a/modules/channel/chain-net/dap_stream_ch_chain_net.c +++ b/modules/channel/chain-net/dap_stream_ch_chain_net.c @@ -197,7 +197,7 @@ static bool s_stream_ch_packet_in(dap_stream_ch_t *a_ch, void* a_arg) case DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY_REQUEST:{ if (l_ch_chain_net_pkt->hdr.data_size != DAP_CHAIN_NET_CH_VALIDATOR_READY_REQUEST_SIZE) { - log_it(L_WARNING, "Invalid VALIDATOR_READY_REQUEST size %hu, expected %zu", l_ch_chain_net_pkt->hdr.data_size, + log_it(L_WARNING, "Invalid VALIDATOR_READY_REQUEST size %hu, expected %u", l_ch_chain_net_pkt->hdr.data_size, DAP_CHAIN_NET_CH_VALIDATOR_READY_REQUEST_SIZE); return false; } diff --git a/modules/common/dap_chain_datum_token.c b/modules/common/dap_chain_datum_token.c index 529de839c5917920856519cebcf040fbf126f455..114575ca1bb6a8c4bb14b122ce54fb9436280d87 100644 --- a/modules/common/dap_chain_datum_token.c +++ b/modules/common/dap_chain_datum_token.c @@ -73,13 +73,18 @@ dap_tsd_t* dap_chain_datum_token_tsd_get(dap_chain_datum_token_t *a_token, size_ return (dap_tsd_t*)a_token->data_n_tsd; } -dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial, size_t *a_token_size) { +dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial, size_t *a_token_size) +{ dap_chain_datum_token_old_t *l_token_old = (dap_chain_datum_token_old_t*)a_token_serial; size_t l_token_data_n_tsd_size = *a_token_size - sizeof(dap_chain_datum_token_old_t); size_t l_token_size = l_token_data_n_tsd_size + sizeof(dap_chain_datum_token_t); switch (((dap_chain_datum_token_t*)a_token_serial)->type) { case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_SIMPLE: { dap_chain_datum_token_t *l_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, l_token_size); + if (!l_token) { + log_it(L_CRITICAL, g_error_memory_alloc); + return NULL; + } *l_token = (dap_chain_datum_token_t) { .type = DAP_CHAIN_DATUM_TOKEN_TYPE_DECL, .version = 1, @@ -96,6 +101,10 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial } case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_PRIVATE_DECL: { dap_chain_datum_token_t *l_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, l_token_size); + if (!l_token) { + log_it(L_CRITICAL, g_error_memory_alloc); + return NULL; + } *l_token = (dap_chain_datum_token_t) { .type = DAP_CHAIN_DATUM_TOKEN_TYPE_DECL, .version = 1, @@ -114,6 +123,10 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial } case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_PRIVATE_UPDATE: { dap_chain_datum_token_t *l_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, l_token_size); + if (!l_token) { + log_it(L_CRITICAL, g_error_memory_alloc); + return NULL; + } *l_token = (dap_chain_datum_token_t) { .type = DAP_CHAIN_DATUM_TOKEN_TYPE_UPDATE, .version = 1, @@ -132,6 +145,10 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial } case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_NATIVE_DECL: { dap_chain_datum_token_t *l_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, l_token_size); + if (!l_token) { + log_it(L_CRITICAL, g_error_memory_alloc); + return NULL; + } *l_token = (dap_chain_datum_token_t) { .type = DAP_CHAIN_DATUM_TOKEN_TYPE_DECL, .version = 1, @@ -150,6 +167,10 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial } case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_NATIVE_UPDATE: { dap_chain_datum_token_t *l_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, l_token_size); + if (!l_token) { + log_it(L_CRITICAL, g_error_memory_alloc); + return NULL; + } *l_token = (dap_chain_datum_token_t) { .type = DAP_CHAIN_DATUM_TOKEN_TYPE_UPDATE, .version = 1, @@ -168,6 +189,10 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial } case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_PUBLIC: { dap_chain_datum_token_t *l_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, l_token_size); + if (!l_token) { + log_it(L_CRITICAL, g_error_memory_alloc); + return NULL; + } *l_token = (dap_chain_datum_token_t) { .type = DAP_CHAIN_DATUM_TOKEN_TYPE_DECL, .version = 1, diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c index 18174820bb623fcff32796ec0edaa0395b72a0ef..26a382ae19aeafd2e98ffe25d793b78b07cf191f 100644 --- a/modules/net/dap_chain_node_cli_cmd_tx.c +++ b/modules/net/dap_chain_node_cli_cmd_tx.c @@ -811,48 +811,38 @@ json_object *dap_db_history_tx_all(dap_chain_t *l_chain, dap_chain_net_t *l_net, * @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) { - if (!a_chain->callback_atom_get_datums) { - log_it(L_WARNING, "Not defined callback_atom_get_datums for chain \"%s\"", a_chain->name); +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) +{ + if (!a_chain->callback_datum_iter_create) { + log_it(L_WARNING, "Not defined datum iterators for chain \"%s\"", a_chain->name); return NULL; } - *a_token_num = 0; - size_t l_atom_size = 0; - dap_chain_cell_t *l_cell = a_chain->cells; + size_t l_token_num = 0; json_object* json_arr_history_token_out = json_object_new_array(); - do { - dap_chain_atom_iter_t *l_atom_iter = a_chain->callback_atom_iter_create(a_chain, l_cell->id, NULL); - if(!a_chain->callback_atom_get_datums) { - log_it(L_DEBUG, "Not defined callback_atom_get_datums for chain \"%s\"", a_chain->name); - json_object_put(json_arr_history_token_out); - return NULL ; - } - for (dap_chain_atom_ptr_t l_atom = a_chain->callback_atom_iter_get(l_atom_iter, DAP_CHAIN_ITER_OP_FIRST, &l_atom_size); - l_atom && l_atom_size; l_atom = a_chain->callback_atom_iter_get(l_atom_iter, DAP_CHAIN_ITER_OP_NEXT, &l_atom_size)) { - size_t l_datums_count = 0; - dap_chain_datum_t **l_datums = a_chain->callback_atom_get_datums(l_atom, l_atom_size, &l_datums_count); - for(size_t l_datum_n = 0; l_datum_n < l_datums_count; l_datum_n++) { - dap_chain_datum_t *l_datum = l_datums[l_datum_n]; - if (!l_datum || l_datum->header.type_id != DAP_CHAIN_DATUM_TOKEN_DECL) - continue; - if (a_token_name) { - size_t l_token_size = l_datum->header.data_size; - dap_chain_datum_token_t *l_token = dap_chain_datum_token_read(l_datum->data, &l_token_size); - int l_cmp = dap_strcmp(l_token->ticker, a_token_name); - DAP_DELETE(l_token); - if (l_cmp) - continue; - } - json_object* json_history_token = json_object_new_object(); - dap_chain_datum_dump_json(json_history_token, l_datum, a_hash_out_type, a_chain->net_id); - json_object_array_add(json_arr_history_token_out, json_history_token); - (*a_token_num)++; - } - DAP_DELETE(l_datums); + dap_chain_datum_iter_t *l_datum_iter = a_chain->callback_datum_iter_create(a_chain); + for (dap_chain_datum_t *l_datum = a_chain->callback_datum_iter_get_first(l_datum_iter); + l_datum; l_datum = a_chain->callback_datum_iter_get_next(l_datum_iter)) { + if (l_datum->header.type_id != DAP_CHAIN_DATUM_TOKEN_DECL) + continue; + if (a_token_name) { + size_t l_token_size = l_datum->header.data_size; + dap_chain_datum_token_t *l_token = dap_chain_datum_token_read(l_datum->data, &l_token_size); + int l_cmp = dap_strcmp(l_token->ticker, a_token_name); + DAP_DELETE(l_token); + if (l_cmp) + continue; } - a_chain->callback_atom_iter_delete(l_atom_iter); - l_cell = l_cell->hh.next; - } while (l_cell); + int l_ret_code = l_datum_iter->ret_code; + 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); + json_object_array_add(json_arr_history_token_out, json_history_token); + l_token_num++; + } + a_chain->callback_datum_iter_delete(l_datum_iter); + if (a_token_num) + *a_token_num = l_token_num; return json_arr_history_token_out; } diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index e7dca3dd963e765278675e9c9c3b75c31b72fbe5..8a57dc0d503e561669ce0531fc6ba69290f350fc 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -1718,7 +1718,7 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_string_t * l_str_tmp = dap_string_new(NULL); char buf[DAP_TIME_STR_SIZE]; - dap_string_append_printf(l_str_tmp,"\nEvent %s:\n", l_event_hash_str); + dap_string_append_printf(l_str_tmp, "\nEvent %s:\n", l_event_hash_str); // Round info if ((l_from_events_str && strcmp(l_from_events_str,"round.new") == 0) && l_round_item) {