From ed9c2ea53adcb2aff39f2d655f76c0eaf6fd5b83 Mon Sep 17 00:00:00 2001 From: Aleksandr Lysikov <lysikov@inbox.ru> Date: Mon, 6 May 2019 22:47:38 +0500 Subject: [PATCH] fixed return code in dap_chain_mempool_tx_create_cond() --- dap_chain_mempool.c | 23 +++++++++++++---------- dap_chain_mempool.h | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/dap_chain_mempool.c b/dap_chain_mempool.c index e100037..2c4d7dc 100755 --- a/dap_chain_mempool.c +++ b/dap_chain_mempool.c @@ -281,7 +281,7 @@ int dap_chain_mempool_tx_create_cond(dap_enc_key_t *a_key_from, dap_enc_key_t *a // nothing to tranfer (not enough funds) if(!l_list_used_out || l_value_transfer < l_value_need) { dap_list_free_full(l_list_used_out, free); - return 0; + return -2; } } @@ -304,7 +304,7 @@ int dap_chain_mempool_tx_create_cond(dap_enc_key_t *a_key_from, dap_enc_key_t *a // add 'out_cond' and 'out' items { uint64_t l_value_pack = 0; // how much coin add to 'out' items - if(dap_chain_datum_tx_add_out_cond_item(&l_tx, a_key_cond, a_addr_cond, a_value, a_cond, a_cond_size) == 1) { + if(dap_chain_datum_tx_add_out_cond_item(&l_tx, a_key_cond, (dap_chain_addr_t*)a_addr_cond, a_value, a_cond, a_cond_size) == 1) { l_value_pack += a_value; // transaction fee if(a_addr_fee) { @@ -328,19 +328,22 @@ int dap_chain_mempool_tx_create_cond(dap_enc_key_t *a_key_from, dap_enc_key_t *a return -1; } - size_t l_datum_data_size = dap_chain_datum_tx_get_size(l_tx); - dap_chain_datum_t * l_datum = DAP_NEW_Z_SIZE(dap_chain_datum_t, sizeof(l_datum->header) + l_datum_data_size); - memcpy(l_datum->data, l_tx, l_datum_data_size); - l_datum->header.data_size = l_datum_data_size; - l_datum->header.version_id = DAP_CHAIN_DATUM_VERSION; - DAP_DELETE(l_tx); + size_t l_tx_size = dap_chain_datum_tx_get_size(l_tx); + dap_chain_datum_t *l_datum = dap_chain_datum_create(DAP_CHAIN_DATUM_TX, l_tx, l_tx_size); dap_chain_hash_fast_t l_key_hash; - dap_hash_fast(l_datum, l_datum_data_size + sizeof(l_datum->header), &l_key_hash); + dap_hash_fast(l_tx, l_tx_size, &l_key_hash); + DAP_DELETE(l_tx); + + + char * l_key_str = dap_chain_hash_fast_to_str_new(&l_key_hash); - if(dap_chain_global_db_gr_set(l_key_str, (uint8_t *) l_datum, l_datum_data_size + if(dap_chain_global_db_gr_set(l_key_str, (uint8_t *) l_datum, dap_chain_datum_size(l_datum) , c_dap_datum_mempool_gdb_group)) { log_it(L_NOTICE, "Transaction %s placed in mempool", l_key_str); + // add transaction to utxo + if(dap_chain_utxo_tx_add((dap_chain_datum_tx_t*) l_datum->data)<0) + log_it(L_ERROR, "Transaction %s not placed in UTXO", l_key_str); } DAP_DELETE(l_key_str); diff --git a/dap_chain_mempool.h b/dap_chain_mempool.h index 21feffb..797907a 100755 --- a/dap_chain_mempool.h +++ b/dap_chain_mempool.h @@ -45,7 +45,7 @@ int dap_chain_mempool_tx_create(dap_enc_key_t *a_key_from, const char a_token_ticker[10], uint64_t a_value, uint64_t a_value_fee); - +// Make transfer transaction & insert to cache int dap_chain_mempool_tx_create_cond(dap_enc_key_t *a_key_from, dap_enc_key_t *a_key_cond, const dap_chain_addr_t* a_addr_from, const dap_chain_addr_t* a_addr_cond, const dap_chain_addr_t* a_addr_fee, const char a_token_ticker[10], -- GitLab