diff --git a/modules/chain/dap_chain_cell.c b/modules/chain/dap_chain_cell.c index 3a839f3b4febd53715b05eafbb2911d899d31d20..e771db6ae459dc081fd3a04b533c0fdb4bd4efe7 100644 --- a/modules/chain/dap_chain_cell.c +++ b/modules/chain/dap_chain_cell.c @@ -215,7 +215,7 @@ int dap_chain_cell_load(dap_chain_t * a_chain, const char * a_cell_file_path) } dap_chain_atom_ptr_t l_element = DAP_NEW_SIZE(dap_chain_atom_ptr_t, l_el_size); if (!l_element) { - log_it(L_ERROR, "Memory allocation error in dap_chain_cell_load, errno=%d", errno), NULL; + log_it(L_ERROR, "Memory allocation error in dap_chain_cell_load, errno=%d", errno); ret = -5; break; } diff --git a/modules/chain/include/dap_chain.h b/modules/chain/include/dap_chain.h index d2f44e3764bddb58263b9a3d12261086e5ac2b85..fda6fe0e595c9170ece404708127e406104b3b21 100644 --- a/modules/chain/include/dap_chain.h +++ b/modules/chain/include/dap_chain.h @@ -100,7 +100,7 @@ typedef dap_time_t (*dap_chain_callback_atom_get_timestamp_t)(dap_chain_atom_ptr typedef dap_chain_atom_ptr_t (*dap_chain_callback_atom_iter_find_by_hash_t)(dap_chain_atom_iter_t * ,dap_chain_hash_fast_t *,size_t*); typedef dap_chain_datum_t * (*dap_chain_callback_datum_find_by_hash_t)(dap_chain_t *, dap_chain_hash_fast_t *, dap_chain_hash_fast_t *, int *); -typedef dap_chain_atom_ptr_t (*dap_chain_callback_block_find_by_hash_t)(dap_chain_t * ,dap_chain_hash_fast_t *); +typedef dap_chain_atom_ptr_t (*dap_chain_callback_block_find_by_hash_t)(dap_chain_t * ,dap_chain_hash_fast_t *, size_t *); typedef dap_chain_atom_ptr_t * (*dap_chain_callback_atom_iter_get_atoms_t)(dap_chain_atom_iter_t * ,size_t* ,size_t**); typedef size_t (*dap_chain_callback_add_datums_t)(dap_chain_t * , dap_chain_datum_t **, size_t ); diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c index 4a08e0645d6fad34c417bf0f857276a58aa57349..e0b6be276ab48d248816c6924b287067ff67f8fb 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/channel/chain/dap_stream_ch_chain.c @@ -1375,7 +1375,8 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) dap_chain_hash_fast_to_str(&l_atom_hash, l_atom_hash_str, DAP_CHAIN_HASH_FAST_STR_SIZE); log_it(L_INFO, "In: CHAIN pkt: atom hash %s (size %zd)", l_atom_hash_str, l_chain_pkt_data_size); } - dap_proc_queue_add_callback_inter(a_ch->stream_worker->worker->proc_queue_input, s_sync_in_chains_callback, l_sync_request); + if (dap_proc_queue_add_callback_inter(a_ch->stream_worker->worker->proc_queue_input, s_sync_in_chains_callback, l_sync_request)) + log_it(L_ERROR, "System queue overflow with atom trying atom add. All following atoms will be rejected!"); } else { log_it(L_WARNING, "Empty chain packet"); s_stream_ch_write_error_unsafe(a_ch, l_chain_pkt->hdr.net_id.uint64, diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index 8d1df94841965fb1b9ef3f3c938ce3038c2aae6b..925e79df417b0c47a14135e9711f9194ae83e016 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -2343,7 +2343,6 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod if (++l_session->cur_round.votes_against_count * 3 >= dap_list_length(l_session->cur_round.all_validators) * 2) s_session_state_change(l_session, DAP_CHAIN_ESBOCS_SESSION_STATE_PREVIOUS, dap_time_now()); - } break; case DAP_CHAIN_ESBOCS_MSG_TYPE_PRE_COMMIT: @@ -2476,7 +2475,7 @@ static int s_callback_block_verify(dap_chain_cs_blocks_t *a_blocks, dap_chain_bl if (!l_esbocs_pvt->poa_mode) { // Compare signature with delegated keys if (!dap_chain_net_srv_stake_key_delegated(&l_signing_addr)) { - char *l_bad_addr = dap_chain_addr_to_str(&l_signing_addr); + char *l_bad_addr = dap_chain_hash_fast_to_str_new(&l_signing_addr.data.hash_fast); log_it(L_ATT, "Unknown PoS signer %s", l_bad_addr); DAP_DELETE(l_bad_addr); continue; diff --git a/modules/net/srv/dap_chain_net_srv.c b/modules/net/srv/dap_chain_net_srv.c index 67a0e57b2cc6e7dae467fe81432a19e8abf1caa0..8a997d0319e3778a2a34d13bcdcc0cee112fcc7a 100644 --- a/modules/net/srv/dap_chain_net_srv.c +++ b/modules/net/srv/dap_chain_net_srv.c @@ -647,10 +647,12 @@ static bool s_fee_verificator_callback(dap_ledger_t *a_ledger, UNUSED_ARG dap_ch return false; if (dap_hash_fast_is_blank(&l_tx_in_cond->header.tx_prev_hash)) return false; - const dap_chain_block_cache_t *l_block_cache = l_chain->callback_block_find_by_tx_hash(l_chain, &l_tx_in_cond->header.tx_prev_hash); - if (!l_block_cache) + size_t l_block_size = 0; + dap_chain_block_t *l_block = (dap_chain_block_t *)l_chain->callback_block_find_by_tx_hash( + l_chain, &l_tx_in_cond->header.tx_prev_hash, &l_block_size); + if (!l_block) continue; - dap_sign_t *l_sign_block = dap_chain_block_sign_get(l_block_cache->block, l_block_cache->block_size, 0); + dap_sign_t *l_sign_block = dap_chain_block_sign_get(l_block, l_block_size, 0); if (!l_sign_block) return false; diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c index c10a22fbfe31138f6f0f5399dafdf4df133e4fa5..7e69c6ecd1e5be79a30b5c18e229033af6087785 100644 --- a/modules/type/blocks/dap_chain_cs_blocks.c +++ b/modules/type/blocks/dap_chain_cs_blocks.c @@ -107,7 +107,7 @@ static dap_chain_atom_ptr_t s_callback_atom_iter_find_by_hash(dap_chain_atom_ite static dap_chain_datum_t *s_callback_datum_find_by_hash(dap_chain_t *a_chain, dap_chain_hash_fast_t *a_datum_hash, dap_chain_hash_fast_t *a_block_hash, int *a_ret_code); -static dap_chain_atom_ptr_t s_callback_block_find_by_tx_hash(dap_chain_t * a_chain, dap_chain_hash_fast_t * a_tx_hash); +static dap_chain_atom_ptr_t s_callback_block_find_by_tx_hash(dap_chain_t * a_chain, dap_chain_hash_fast_t * a_tx_hash, size_t *a_block_size); static dap_chain_datum_t** s_callback_atom_get_datums(dap_chain_atom_ptr_t a_atom, size_t a_atom_size, size_t * a_datums_count); static dap_time_t s_chain_callback_atom_get_timestamp(dap_chain_atom_ptr_t a_atom) { return ((dap_chain_block_t *)a_atom)->hdr.ts_created; } @@ -1051,8 +1051,10 @@ static dap_chain_atom_verify_res_t s_callback_atom_add(dap_chain_t * a_chain, da // verify hashes and consensus dap_chain_atom_verify_res_t ret = s_callback_atom_verify (a_chain, a_atom, a_atom_size); - if (ret == ATOM_MOVE_TO_THRESHOLD) + if (ret == ATOM_MOVE_TO_THRESHOLD) { + //log_it(L_ATT, "Booo!"); ret = ATOM_REJECT; // TODO remove it when threshold will work + } if( ret == ATOM_ACCEPT){ int l_consensus_check = s_add_atom_to_blocks(l_blocks, l_block_cache); @@ -1269,7 +1271,7 @@ static dap_chain_datum_t *s_callback_datum_find_by_hash(dap_chain_t *a_chain, da * @param a_tx_hash * @return atom_ptr */ -static dap_chain_atom_ptr_t s_callback_block_find_by_tx_hash(dap_chain_t * a_chain, dap_chain_hash_fast_t * a_tx_hash) +static dap_chain_atom_ptr_t s_callback_block_find_by_tx_hash(dap_chain_t * a_chain, dap_chain_hash_fast_t * a_tx_hash, size_t *a_block_size) { dap_chain_cs_blocks_t * l_cs_blocks = DAP_CHAIN_CS_BLOCKS(a_chain); dap_chain_block_datum_index_t *l_datum_index = NULL; @@ -1278,7 +1280,9 @@ static dap_chain_atom_ptr_t s_callback_block_find_by_tx_hash(dap_chain_t * a_cha pthread_rwlock_unlock(&PVT(l_cs_blocks)->datums_rwlock); if (!l_datum_index) return NULL; - return l_datum_index->block_cache; + if (a_block_size) + *a_block_size = l_datum_index->block_cache->block_size; + return l_datum_index->block_cache->block; } /**