From c8d40165e8189aecdc63d2afefe69567bb1c3aa4 Mon Sep 17 00:00:00 2001 From: "Constantin P." <papizh.konstantin@demlabs.net> Date: Mon, 12 Feb 2024 13:39:09 +0000 Subject: [PATCH] Develop ports 12.02 --- .../dap_stream_ch_chain_net_srv.c | 4 +- modules/mempool/dap_chain_mempool.c | 2 +- modules/net/dap_chain_ledger.c | 61 +++++++++++-------- modules/net/dap_chain_net.c | 9 ++- modules/net/dap_chain_net_anchor.c | 3 +- modules/net/dap_chain_net_node_list.c | 1 + modules/net/dap_chain_node_cli.c | 7 ++- modules/net/dap_chain_node_cli_cmd.c | 61 +++++++++++++++---- .../dap_chain_net_srv_stake_pos_delegate.c | 2 +- modules/type/dag/dap_chain_cs_dag.c | 30 ++++----- 10 files changed, 112 insertions(+), 68 deletions(-) diff --git a/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c b/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c index 6066fa11d2..c14c1be39b 100644 --- a/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c +++ b/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.c @@ -1181,8 +1181,8 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch , void* a_arg) if (l_request->data_size_recv) { l_request->data_size = l_request->data_size_recv; if (!l_request->data_size_send){ - l_request = (pkt_test_t*)DAP_DUP_SIZE(l_request, sizeof(pkt_test_t)); - l_request = DAP_REALLOC(l_request, sizeof(pkt_test_t) + l_request->data_size); + l_request = DAP_NEW_Z_SIZE(pkt_test_t, sizeof(pkt_test_t) + l_request->data_size); + *l_request = *(pkt_test_t*)l_ch_pkt->data; } randombytes(l_request->data, l_request->data_size); diff --git a/modules/mempool/dap_chain_mempool.c b/modules/mempool/dap_chain_mempool.c index 57688fda66..7dbf04b512 100644 --- a/modules/mempool/dap_chain_mempool.c +++ b/modules/mempool/dap_chain_mempool.c @@ -1468,7 +1468,7 @@ void dap_chain_mempool_filter(dap_chain_t *a_chain, int *a_removed){ int l_removed = 0; char * l_gdb_group = dap_chain_net_get_gdb_group_mempool_new(a_chain); size_t l_objs_size = 0; - dap_time_t l_cut_off_time = dap_time_now() - 2592000; // 2592000 sec = 30 days + dap_time_t l_cut_off_time = dap_time_now() - 3 * 24 * 3600; // 3 days char l_cut_off_time_str[80] = {'\0'}; dap_time_to_str_rfc822(l_cut_off_time_str, 80, l_cut_off_time); dap_global_db_obj_t * l_objs = dap_global_db_get_all_sync(l_gdb_group, &l_objs_size); diff --git a/modules/net/dap_chain_ledger.c b/modules/net/dap_chain_ledger.c index ca07ba8f0e..3b8b2c7869 100644 --- a/modules/net/dap_chain_ledger.c +++ b/modules/net/dap_chain_ledger.c @@ -4210,30 +4210,6 @@ int dap_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx } } - - if (dap_chain_datum_tx_items_get((dap_chain_datum_tx_t*) a_tx, TX_ITEM_TYPE_VOTING, NULL)){ - if (s_voting_callback){ - if (!s_voting_callback(a_ledger, TX_ITEM_TYPE_VOTING, a_tx, false)){ - debug_if(s_debug_more, L_WARNING, "Verificator check error for voting."); - l_err_num = DAP_LEDGER_TX_CHECK_VERIFICATOR_CHECK_FAILURE; - } - } else { - debug_if(s_debug_more, L_WARNING, "Verificator check error for voting item"); - l_err_num = DAP_LEDGER_TX_CHECK_NO_VERIFICATOR_SET; - } - }else if (dap_chain_datum_tx_items_get((dap_chain_datum_tx_t*) a_tx, TX_ITEM_TYPE_VOTE, NULL)){ - if (s_voting_callback){ - if (!s_voting_callback(a_ledger, TX_ITEM_TYPE_VOTE, a_tx, false)){ - debug_if(s_debug_more, L_WARNING, "Verificator check error for vote."); - l_err_num = DAP_LEDGER_TX_CHECK_VERIFICATOR_CHECK_FAILURE; - } - } else { - debug_if(s_debug_more, L_WARNING, "Verificator check error for vote item"); - l_err_num = DAP_LEDGER_TX_CHECK_NO_VERIFICATOR_SET; - } - } - - // 8. Check sovereign tax if (l_tax_check && !l_err_num) { uint256_t l_expected_tax = {}; @@ -4248,6 +4224,31 @@ int dap_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx } } + dap_list_t *l_items_voting; + if ((l_items_voting = dap_chain_datum_tx_items_get((dap_chain_datum_tx_t*) a_tx, TX_ITEM_TYPE_VOTING, NULL))) { + if (s_voting_callback){ + if (!s_voting_callback(a_ledger, TX_ITEM_TYPE_VOTING, a_tx, false)){ + debug_if(s_debug_more, L_WARNING, "Verificator check error for voting."); + l_err_num = DAP_LEDGER_TX_CHECK_VERIFICATOR_CHECK_FAILURE; + } + } else { + debug_if(s_debug_more, L_WARNING, "Verificator check error for voting item"); + l_err_num = DAP_LEDGER_TX_CHECK_NO_VERIFICATOR_SET; + } + dap_list_free(l_items_voting); + }else if ((l_items_voting = dap_chain_datum_tx_items_get((dap_chain_datum_tx_t*) a_tx, TX_ITEM_TYPE_VOTE, NULL))) { + if (s_voting_callback){ + if (!s_voting_callback(a_ledger, TX_ITEM_TYPE_VOTE, a_tx, false)){ + debug_if(s_debug_more, L_WARNING, "Verificator check error for vote."); + l_err_num = DAP_LEDGER_TX_CHECK_VERIFICATOR_CHECK_FAILURE; + } + } else { + debug_if(s_debug_more, L_WARNING, "Verificator check error for vote item"); + l_err_num = DAP_LEDGER_TX_CHECK_NO_VERIFICATOR_SET; + } + dap_list_free(l_items_voting); + } + if (a_main_ticker && !l_err_num) *a_main_ticker = dap_strdup(l_main_ticker); @@ -4653,11 +4654,17 @@ int dap_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx, dap_ha } DAP_DELETE (l_addr_str); } - - if (dap_chain_datum_tx_items_get((dap_chain_datum_tx_t*) a_tx, TX_ITEM_TYPE_VOTING, NULL) && s_voting_callback) + dap_list_t *l_items_voting; + if ((l_items_voting = dap_chain_datum_tx_items_get((dap_chain_datum_tx_t*) a_tx, TX_ITEM_TYPE_VOTING, NULL)) && s_voting_callback) { + dap_list_free(l_items_voting); s_voting_callback(a_ledger, TX_ITEM_TYPE_VOTING, a_tx, true); - else if (dap_chain_datum_tx_items_get((dap_chain_datum_tx_t*) a_tx, TX_ITEM_TYPE_VOTE, NULL) && s_voting_callback) + } + else if ((l_items_voting = dap_chain_datum_tx_items_get((dap_chain_datum_tx_t*) a_tx, TX_ITEM_TYPE_VOTE, NULL)) && s_voting_callback) { + dap_list_free(l_items_voting); s_voting_callback(a_ledger, TX_ITEM_TYPE_VOTE, a_tx, true); + } + + // add transaction to the cache list dap_ledger_tx_item_t *l_tx_item = DAP_NEW_Z(dap_ledger_tx_item_t); diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index c25241d263..534edc9d83 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -2712,12 +2712,11 @@ int s_net_load(dap_chain_net_t *a_net) dap_chain_net_t *l_net = a_net; dap_config_t *l_cfg = NULL; - dap_string_t *l_cfg_path = dap_string_new("network/"); - dap_string_append(l_cfg_path,a_net->pub.name); - - if( !( l_cfg = dap_config_open ( l_cfg_path->str ) ) ) { + char *l_cfg_path = dap_strdup_printf("network/%s", a_net->pub.name); + l_cfg = dap_config_open ( l_cfg_path ); + DAP_DELETE(l_cfg_path); + if (!l_cfg) { log_it(L_ERROR,"Can't open default network config"); - dap_string_free(l_cfg_path,true); return -1; } diff --git a/modules/net/dap_chain_net_anchor.c b/modules/net/dap_chain_net_anchor.c index dfa2bb8e58..581836b24b 100644 --- a/modules/net/dap_chain_net_anchor.c +++ b/modules/net/dap_chain_net_anchor.c @@ -148,7 +148,8 @@ int dap_chain_net_anchor_verify(dap_chain_datum_anchor_t *a_anchor, size_t a_dat // Each sign change the sign_size field by adding its size after signing. So we need to change this field in header for each sign. l_signs_size_for_current_sign += l_sign_max_size; } - + DAP_DELETE(l_unique_decree_signs); + DAP_DELETE(l_decree_signs_arr); l_anchor->header.signs_size = l_signs_size_for_current_sign; if(!l_signs_verify_counter) diff --git a/modules/net/dap_chain_net_node_list.c b/modules/net/dap_chain_net_node_list.c index 2320071f16..73d1787adb 100644 --- a/modules/net/dap_chain_net_node_list.c +++ b/modules/net/dap_chain_net_node_list.c @@ -292,5 +292,6 @@ int dap_chain_net_node_list_init() for (uint16_t i = 0; i < l_net_count; i++) { dap_chain_net_add_nodelist_notify_callback(l_net_list[i], s_node_list_callback_notify, l_net_list[i]); } + DAP_DELETE(l_net_list); return 0; } diff --git a/modules/net/dap_chain_node_cli.c b/modules/net/dap_chain_node_cli.c index 9b1c0eb71e..324ca95a2d 100644 --- a/modules/net/dap_chain_node_cli.c +++ b/modules/net/dap_chain_node_cli.c @@ -84,9 +84,10 @@ int dap_chain_node_cli_init(dap_config_t * g_config) dap_cli_server_cmd_add("global_db", com_global_db, "Work with global database", "global_db cells add -cell <cell id> \n" "global_db flush \n\n" - "global_db write -group <group_name> -key <key_name> -value <value>" - "global_db read -group <group_name> -key <key_name>" - "global_db delete -group <group_name> -key <key_name>" + "global_db write -group <group_name> -key <key_name> -value <value>\n" + "global_db read -group <group_name> -key <key_name>\n" + "global_db delete -group <group_name> -key <key_name>\n" + "global_db group_list\n" "global_db drop_table -group <group_name>\n" "global_db get_keys -group <group name>" diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index 9c6e87cd79..82ae9bbcb3 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -605,7 +605,8 @@ void s_dap_chain_net_purge(dap_chain_net_t * a_net) int com_global_db(int a_argc, char ** a_argv, void **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_NONE, CMD_NAME_CELL, CMD_ADD, CMD_FLUSH, CMD_RECORD, CMD_WRITE, CMD_READ, + CMD_DELETE, CMD_DROP, CMD_GET_KEYS, CMD_GROUP_LIST }; int arg_index = 1; int cmd_name = CMD_NONE; @@ -626,6 +627,8 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) cmd_name = CMD_DROP; else if(dap_cli_server_cmd_find_option_val(a_argv, arg_index, dap_min(a_argc, arg_index + 1), "get_keys", NULL)) cmd_name = CMD_GET_KEYS; + else if(dap_cli_server_cmd_find_option_val(a_argv, arg_index, dap_min(a_argc, arg_index + 1), "group_list", NULL)) + cmd_name = CMD_GROUP_LIST; switch (cmd_name) { case CMD_NAME_CELL: @@ -867,16 +870,33 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) } size_t l_out_len = 0; - uint8_t *l_value_out = dap_global_db_get_sync(l_group_str, l_key_str, &l_out_len, NULL, NULL); - - if (!l_value_out || !l_out_len) + dap_nanotime_t l_ts = 0; + uint8_t *l_value_out = dap_global_db_get_sync(l_group_str, l_key_str, &l_out_len, NULL, &l_ts); + /*if (!l_value_out || !l_out_len) { dap_cli_server_cmd_set_reply_text(a_str_reply, "Record with key %s in group %s not found", l_key_str, l_group_str); return -121; + }*/ + if (l_ts) { + char l_ts_str[80] = { '\0' }; + dap_gbd_time_to_str_rfc822(l_ts_str, sizeof(l_ts_str), l_ts); + char *l_value_hexdump = dap_dump_hex(l_value_out, l_out_len); + if (l_value_hexdump) { + + dap_cli_server_cmd_set_reply_text(a_str_reply, "\n\"%s : %s\"\nTime: %s\nValue len: %zu\nValue hex:\n\n%s", + l_group_str, l_key_str, l_ts_str, l_out_len, l_value_hexdump); + DAP_DELETE(l_value_hexdump); + } else { + dap_cli_server_cmd_set_reply_text(a_str_reply, "\n\"%s : %s\"\nTime: %s\nNo value\n", + l_group_str, l_key_str, l_ts_str); + } + DAP_DELETE(l_value_out); + } else { + dap_cli_server_cmd_set_reply_text(a_str_reply, "\nRecord \"%s : %s\" not found\n", + l_group_str, l_key_str); } - dap_cli_server_cmd_set_reply_text(a_str_reply, "Group %s, key %s, data:\n %s", l_group_str, l_key_str, (char*)l_value_out); - DAP_DELETE(l_value_out); + return 0; } case CMD_DELETE: @@ -915,7 +935,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) return 0; } - if (dap_global_db_del(l_group_str, l_key_str, NULL, NULL)) { + if (!dap_global_db_del(l_group_str, l_key_str, NULL, NULL)) { dap_cli_server_cmd_set_reply_text(a_str_reply, "Record with key %s in group %s was deleted successfuly", l_key_str, l_group_str); return 0; } else { @@ -962,12 +982,26 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply) } dap_string_t *l_ret_str = dap_string_new(NULL); - for(size_t i = 0; i < l_objs_count; i++){ - dap_string_append_printf(l_ret_str, "%s\n", l_obj[i].key); + for(size_t i = 0; i < l_objs_count; i++) { + char l_ts[64] = { '\0' }; + dap_gbd_time_to_str_rfc822(l_ts, sizeof(l_ts), l_obj[i].timestamp); + dap_string_append_printf(l_ret_str, "\t%s, %s\n", l_obj[i].key, l_ts); } - - dap_cli_server_cmd_set_reply_text(a_str_reply, "Keys list for group %s:\n%s\n", l_group_str, l_ret_str->str); + dap_global_db_objs_delete(l_obj, l_objs_count); + dap_cli_server_cmd_set_reply_text(a_str_reply, "Keys list for group \"%s:\n\n%s\n", l_group_str, l_ret_str->str); + dap_string_free(l_ret_str, true); + return 0; + } + case CMD_GROUP_LIST: { + dap_string_t *l_ret_str = dap_string_new(NULL); + dap_list_t *l_group_list = dap_global_db_driver_get_groups_by_mask("*"); + size_t l_count = 0; + for (dap_list_t *l_list = l_group_list; l_list; l_list = dap_list_next(l_list), ++l_count) { + dap_string_append_printf(l_ret_str, "\t%-40s : %zu records\n", (char*)l_list->data, dap_global_db_driver_count((char*)l_list->data, 1)); + } + dap_cli_server_cmd_set_reply_text(a_str_reply, "Group list:\n%sTotal count: %zu\n", l_ret_str->str, l_count); dap_string_free(l_ret_str, true); + dap_list_free(l_group_list); return 0; } default: @@ -1922,6 +1956,7 @@ int com_help(int a_argc, char **a_argv, void **a_str_reply) dap_cli_server_cmd_set_reply_text(a_str_reply, "Available commands:\n\n%s\n", l_help_list_str->len ? l_help_list_str->str : "NO ANY COMMAND WERE DEFINED"); + dap_string_free(l_help_list_str, true); return 0; } } @@ -2339,7 +2374,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 can't find network \"%s\"\n%s", a_argv[0], l_net_str, l_str_to_reply); + dap_json_rpc_error_add(DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_NET_NOT_FOUND, "%s can't find network \"%s\"\n%s", a_argv[0], l_net_str->str, l_str_to_reply); return DAP_CHAIN_NODE_CLI_CMD_VALUES_PARSE_NET_CHAIN_ERR_NET_NOT_FOUND; } @@ -3188,7 +3223,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a dap_list_free(l_list_out_items); } break; case DAP_CHAIN_DATUM_TOKEN_EMISSION: { - size_t l_emi_size = 0; + size_t l_emi_size = l_datum->header.data_size; dap_chain_datum_token_emission_t *l_emi = dap_chain_datum_emission_read(l_datum->data, &l_emi_size); if (l_wallet_addr && l_emi && dap_chain_addr_compare(l_wallet_addr, &l_emi->hdr.address)) datum_is_accepted_addr = true; diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c index da0906debc..1616bc2ab4 100644 --- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c +++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c @@ -233,7 +233,7 @@ static bool s_stake_verificator_callback(dap_ledger_t UNUSED_ARG *a_ledger, dap_ log_it(L_WARNING, "Trying to spend conditional tx not by owner"); return false; } - if (a_tx_in->header.ts_created < 1705104000) // Jan 13 2024 00:00:00 GMT, old policy rules + if (a_tx_in->header.ts_created < 1706227200) // Jan 26 2024 00:00:00 GMT, old policy rules return true; dap_chain_net_srv_stake_item_t *l_stake; HASH_FIND(ht, s_srv_stake->tx_itemlist, l_prev_hash, sizeof(dap_hash_t), l_stake); diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index 80bb467422..8d43eb4e60 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -1835,7 +1835,6 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) if ( l_event ){ dap_string_t * l_str_tmp = dap_string_new(NULL); char buf[50]; - dap_time_t l_ts_reated = (dap_time_t)l_event->header.ts_created; dap_string_append_printf(l_str_tmp,"\nEvent %s:\n", l_event_hash_str); @@ -1847,8 +1846,8 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) char * l_hash_str = dap_chain_hash_fast_to_str_new(&l_round_item->round_info.datum_hash); dap_string_append_printf(l_str_tmp, "\t\tdatum_hash: %s\n", l_hash_str); DAP_DELETE(l_hash_str); - dap_time_t l_ts = l_round_item->round_info.ts_update; - dap_string_append_printf(l_str_tmp,"\t\tts_update: %s", dap_ctime_r(&l_ts, buf)); + dap_time_to_str_rfc822(buf, 50, l_round_item->round_info.ts_update); + dap_string_append_printf(l_str_tmp,"\t\tts_update: %s\n", buf); } // Header @@ -1857,7 +1856,8 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_string_append_printf(l_str_tmp,"\t\t\tround ID: %"DAP_UINT64_FORMAT_U"\n",l_event->header.round_id); dap_string_append_printf(l_str_tmp,"\t\t\tcell_id: 0x%016"DAP_UINT64_FORMAT_x"\n",l_event->header.cell_id.uint64); dap_string_append_printf(l_str_tmp,"\t\t\tchain_id: 0x%016"DAP_UINT64_FORMAT_X"\n",l_event->header.chain_id.uint64); - dap_string_append_printf(l_str_tmp,"\t\t\tts_created: %s\n", dap_ctime_r(&l_ts_reated, buf) ); + dap_time_to_str_rfc822(buf, 50, l_event->header.ts_created); + dap_string_append_printf(l_str_tmp,"\t\t\tts_created: %s\n", buf ); // Hash links dap_string_append_printf(l_str_tmp,"\t\t\thashes:\tcount: %u\n",l_event->header.hash_count); @@ -1871,7 +1871,6 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) size_t l_offset = l_event->header.hash_count*sizeof (dap_chain_hash_fast_t); dap_chain_datum_t * l_datum = (dap_chain_datum_t*) (l_event->hashes_n_datum_n_signs + l_offset); size_t l_datum_size = dap_chain_datum_size(l_datum); - dap_time_t l_datum_ts_create = (dap_time_t) l_datum->header.ts_create; // Nested datum const char *l_datum_type = NULL; @@ -1879,7 +1878,8 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_string_append_printf(l_str_tmp,"\t\tdatum:\tdatum_size: %zu\n",l_datum_size); dap_string_append_printf(l_str_tmp,"\t\t\tversion:=0x%02hhX\n", l_datum->header.version_id); dap_string_append_printf(l_str_tmp,"\t\t\ttype_id:=%s\n", l_datum_type); - dap_string_append_printf(l_str_tmp,"\t\t\tts_create=%s\n", dap_ctime_r( &l_datum_ts_create,buf )); + dap_time_to_str_rfc822(buf, 50, l_datum->header.ts_create); + dap_string_append_printf(l_str_tmp,"\t\t\tts_create=%s\n", buf); dap_string_append_printf(l_str_tmp,"\t\t\tdata_size=%u\n", l_datum->header.data_size); // Signatures @@ -1933,9 +1933,9 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_chain_cs_dag_event_t * l_event = (dap_chain_cs_dag_event_t *) ((dap_chain_cs_dag_event_round_item_t *)l_objs[i].value)->event_n_signs; char buf[50]; - dap_time_t l_ts_create = (dap_time_t) l_event->header.ts_created; - dap_string_append_printf(l_str_tmp,"\t%s: ts_create=%s", - l_objs[i].key, dap_ctime_r( &l_ts_create,buf ) ); + dap_time_to_str_rfc822(buf, 50, l_event->header.ts_created); + dap_string_append_printf(l_str_tmp,"\t%s: ts_create=%s\n", + l_objs[i].key, buf); } if (l_objs && l_objs_count ) @@ -1954,10 +1954,10 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_chain_cs_dag_event_item_t * l_event_item = NULL,*l_event_item_tmp = NULL; HASH_ITER(hh,PVT(l_dag)->events,l_event_item, l_event_item_tmp ) { char buf[50]; + dap_time_to_str_rfc822(buf, 50, l_event_item->event->header.ts_created); char * l_event_item_hash_str = dap_chain_hash_fast_to_str_new( &l_event_item->hash); - dap_time_t l_ts_create = (dap_time_t) l_event_item->event->header.ts_created; - dap_string_append_printf(l_str_tmp,"\t%s: ts_create=%s", - l_event_item_hash_str, dap_ctime_r( &l_ts_create,buf ) ); + dap_string_append_printf(l_str_tmp,"\t%s: ts_create=%s\n", + l_event_item_hash_str, buf); DAP_DELETE(l_event_item_hash_str); } size_t l_events_count = HASH_COUNT(PVT(l_dag)->events); @@ -1973,10 +1973,10 @@ static int s_cli_dag(int argc, char ** argv, void **a_str_reply) dap_string_append_printf(l_str_tmp,"\nDAG threshold events:\n"); HASH_ITER(hh,PVT(l_dag)->events_treshold,l_event_item, l_event_item_tmp ) { char buf[50]; + dap_time_to_str_rfc822(buf, 50, l_event_item->event->header.ts_created); char * l_event_item_hash_str = dap_chain_hash_fast_to_str_new( &l_event_item->hash); - dap_time_t l_ts_create = (dap_time_t) l_event_item->event->header.ts_created; - dap_string_append_printf(l_str_tmp,"\t%s: ts_create=%s", - l_event_item_hash_str, dap_ctime_r( &l_ts_create,buf ) ); + dap_string_append_printf(l_str_tmp,"\t%s: ts_create=%s\n", + l_event_item_hash_str, buf); DAP_DELETE(l_event_item_hash_str); } size_t l_events_count = HASH_COUNT(PVT(l_dag)->events_treshold); -- GitLab