diff --git a/modules/mempool/dap_chain_mempool.c b/modules/mempool/dap_chain_mempool.c index 18e438ac1c3bb46e22ddd2dbb7b9eb461c06d625..19b1f2a926e4611a18250e599ef7a90259058e36 100644 --- a/modules/mempool/dap_chain_mempool.c +++ b/modules/mempool/dap_chain_mempool.c @@ -95,9 +95,10 @@ char *dap_chain_mempool_datum_add(const dap_chain_datum_t *a_datum, dap_chain_t dap_chain_hash_fast_t l_key_hash; dap_hash_fast(a_datum->data, a_datum->header.data_size, &l_key_hash); - const char *l_key_str = dap_strcmp(a_hash_out_type, "hex") + char *l_key_str = dap_chain_hash_fast_to_str_new(&l_key_hash); + const char *l_key_str_out = dap_strcmp(a_hash_out_type, "hex") ? dap_enc_base58_encode_hash_to_str_static(&l_key_hash) - : dap_chain_hash_fast_to_str_static(&l_key_hash); + : l_key_str; const char *l_type_str; switch (a_datum->header.type_id) { @@ -111,7 +112,8 @@ char *dap_chain_mempool_datum_add(const dap_chain_datum_t *a_datum, dap_chain_t DAP_DELETE(l_emission); if (l_net_id != a_chain->net_id.uint64) { log_it(L_WARNING, "Datum emission with hash %s NOT placed in mempool: wallet addr net ID %lu != %lu chain net ID", - l_key_str, l_net_id, a_chain->net_id.uint64); + l_key_str_out, l_net_id, a_chain->net_id.uint64); + DAP_DELETE(l_key_str); return NULL; } l_type_str = "emission"; @@ -127,11 +129,13 @@ char *dap_chain_mempool_datum_add(const dap_chain_datum_t *a_datum, dap_chain_t char *l_gdb_group = dap_chain_net_get_gdb_group_mempool_new(a_chain); int l_res = dap_global_db_set_sync(l_gdb_group, l_key_str, a_datum, dap_chain_datum_size(a_datum), false);//, NULL, NULL); if (l_res == DAP_GLOBAL_DB_RC_SUCCESS) - log_it(L_NOTICE, "Datum %s with hash %s was placed in mempool group %s", l_type_str, l_key_str, l_gdb_group); + log_it(L_NOTICE, "Datum %s with hash %s was placed in mempool group %s", l_type_str, l_key_str_out, l_gdb_group); else - log_it(L_WARNING, "Can't place datum %s with hash %s in mempool group %s", l_type_str, l_key_str, l_gdb_group); + log_it(L_WARNING, "Can't place datum %s with hash %s in mempool group %s", l_type_str, l_key_str_out, l_gdb_group); + char *ret = (l_res == DAP_GLOBAL_DB_RC_SUCCESS) ? dap_strdup(l_key_str_out) : NULL; DAP_DELETE(l_gdb_group); - return (l_res == DAP_GLOBAL_DB_RC_SUCCESS) ? dap_strdup(l_key_str) : NULL; + DAP_DELETE(l_key_str); + return ret; } /** diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index 9cdbeab9374f410c8a28ac4c294e5ef382d9af83..6bd861bd7fd7c8c045c9d7b8ffa7b7270afb0c14 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -4555,9 +4555,9 @@ int com_token_decl(int a_argc, char ** a_argv, void **a_str_reply) // Calc datum's hash dap_chain_hash_fast_t l_key_hash; dap_hash_fast(l_datum->data, l_datum->header.data_size, &l_key_hash); - const char *l_key_str = !dap_strcmp(l_hash_out_type, "hex") ? - dap_chain_hash_fast_to_str_static(&l_key_hash) : - dap_enc_base58_encode_hash_to_str_static(&l_key_hash); + char *l_key_str = dap_chain_hash_fast_to_str_new(&l_key_hash); + const char *l_key_str_out = dap_strcmp(l_hash_out_type, "hex") ? + dap_enc_base58_encode_hash_to_str_static(&l_key_hash) : l_key_str; // Add datum to mempool with datum_token hash as a key char *l_gdb_group_mempool = l_chain @@ -4570,8 +4570,10 @@ int com_token_decl(int a_argc, char ** a_argv, void **a_str_reply) return -10; } bool l_placed = dap_global_db_set_sync(l_gdb_group_mempool, l_key_str, l_datum, l_datum_size, false) == 0; + DAP_DELETE(l_gdb_group_mempool); dap_cli_server_cmd_set_reply_text(a_str_reply, "Datum %s with token %s is%s placed in datum pool", - l_key_str, l_ticker, l_placed ? "" : " not"); + l_key_str_out, l_ticker, l_placed ? "" : " not"); + DAP_DELETE(l_key_str); DAP_DELETE(l_datum); DAP_DELETE(l_params); return l_placed ? 0 : -2; @@ -4758,7 +4760,7 @@ int com_token_update(int a_argc, char ** a_argv, void **a_str_reply) // Calc datum's hash dap_chain_hash_fast_t l_key_hash; dap_hash_fast(l_datum->data, l_datum->header.data_size, &l_key_hash); - const char *l_key_str = dap_chain_hash_fast_to_str_static(&l_key_hash); + char *l_key_str = dap_chain_hash_fast_to_str_new(&l_key_hash); const char *l_key_str_out = dap_strcmp(l_hash_out_type, "hex") ? dap_enc_base58_encode_hash_to_str_static(&l_key_hash) : l_key_str; @@ -4772,8 +4774,10 @@ int com_token_update(int a_argc, char ** a_argv, void **a_str_reply) return -10; } bool l_placed = !dap_global_db_set_sync(l_gdb_group_mempool, l_key_str, (uint8_t *)l_datum, l_datum_size, false); - dap_cli_server_cmd_set_reply_text(a_str_reply, "Datum %s with 256bit token %s is%s placed in datum pool", + DAP_DELETE(l_gdb_group_mempool); + dap_cli_server_cmd_set_reply_text(a_str_reply, "Datum %s with token update datum for ticker %s is%s placed in datum pool", l_key_str_out, l_ticker, l_placed ? "" : " not"); + DAP_DELETE(l_key_str); DAP_DELETE(l_datum); DAP_DELETE(l_params); return l_placed ? 0 : -2;