diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c index c8b41104cee4810cb297e0d5463ed41c891c8cb1..fa171cb1b43c8064f775b710e2e4a41c93a6a9a8 100644 --- a/modules/chain/dap_chain_ledger.c +++ b/modules/chain/dap_chain_ledger.c @@ -1081,7 +1081,7 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx) if( (l_ret_check = dap_chain_ledger_tx_cache_check( a_ledger, a_tx, &l_list_bound_items, &l_list_tx_out)) < 0){ log_it (L_WARNING, "dap_chain_ledger_tx_add() tx %s not passed the check: code %d ",l_tx_hash_str, l_ret_check); - return -1; + return l_ret_check*100; } log_it ( L_DEBUG, "dap_chain_ledger_tx_add() check passed for tx %s",l_tx_hash_str); diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c index 27e9d17d4c1de614755cf6cbc72720b54a983b7b..28e07814004ca1acc1605b5a46f3a77c9337dcc1 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/channel/chain/dap_stream_ch_chain.c @@ -247,10 +247,12 @@ bool s_chain_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg) do{ size_t l_atom_treshold_size; // add into ledger + log_it(L_DEBUG, "Try to add atom from treshold"); l_atom_treshold = l_chain->callback_atom_add_from_treshold(l_chain, &l_atom_treshold_size); // add into file if(l_atom_treshold) { int l_res = dap_chain_cell_file_append(l_cell, l_atom_treshold, l_atom_treshold_size); + log_it(L_DEBUG, "Added atom from treshold"); if(l_res < 0) { log_it(L_ERROR, "Can't save event 0x%x from treshold to the file '%s'", l_atom_treshold, l_cell ? l_cell->file_storage_path : "[null]"); @@ -513,7 +515,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) memcpy(&l_ch_chain->request_net_id, &l_chain_pkt->hdr.net_id, sizeof(dap_chain_net_id_t)); memcpy(&l_ch_chain->request_chain_id, &l_chain_pkt->hdr.chain_id, sizeof(dap_chain_id_t)); memcpy(&l_ch_chain->request_cell_id, &l_chain_pkt->hdr.cell_id, sizeof(dap_chain_cell_id_t)); - l_ch_chain->pkt_data = DAP_CALLOC(1, l_chain_pkt_data_size); + l_ch_chain->pkt_data = DAP_NEW_SIZE(byte_t, l_chain_pkt_data_size); memcpy(l_ch_chain->pkt_data, l_chain_pkt->data, l_chain_pkt_data_size); l_ch_chain->pkt_data_size = l_chain_pkt_data_size; dap_events_socket_remove_from_worker_unsafe(a_ch->stream->esocket, a_ch->stream_worker->worker); diff --git a/modules/channel/chain/include/dap_stream_ch_chain.h b/modules/channel/chain/include/dap_stream_ch_chain.h index 17992a7de03552522bdae7834a2ddf6703cf74a4..931d2b9714da6e70195299854d5fffbf8bef4712 100644 --- a/modules/channel/chain/include/dap_stream_ch_chain.h +++ b/modules/channel/chain/include/dap_stream_ch_chain.h @@ -54,7 +54,7 @@ typedef struct dap_stream_ch_chain { dap_stream_ch_chain_state_t state; dap_chain_atom_iter_t * request_atom_iter; - uint8_t *pkt_data; + byte_t *pkt_data; uint64_t pkt_data_size; uint64_t stats_request_atoms_processed; uint64_t stats_request_gdb_processed; diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index e4a1c6f2eca226f83fb5f512487dff3fa40ec7c3..1d79b82d487a8be52ee6672f98b65f8ba6b06a7e 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -265,19 +265,20 @@ static int s_dap_chain_add_atom_to_ledger(dap_chain_cs_dag_t * a_dag, dap_ledger break; case DAP_CHAIN_DATUM_TX: { dap_chain_datum_tx_t *l_tx = (dap_chain_datum_tx_t*) l_datum->data; + // don't save bad transactions to base + int l_ret = dap_chain_ledger_tx_add(a_ledger, l_tx); + if( l_ret !=0 ) { + return l_ret; + } dap_chain_cs_dag_event_item_t * l_tx_event= DAP_NEW_Z(dap_chain_cs_dag_event_item_t); l_tx_event->ts_added = a_event_item->ts_added; l_tx_event->event = a_event_item->event; l_tx_event->event_size = a_event_item->event_size; memcpy(&l_tx_event->hash, &a_event_item->hash, sizeof (l_tx_event->hash) ); - HASH_ADD(hh,PVT(a_dag)->tx_events,hash,sizeof (l_tx_event->hash),l_tx_event); - // don't save bad transactions to base - if(dap_chain_ledger_tx_add(a_ledger, l_tx) != 1) { - return -1; - } + } break; default: @@ -375,8 +376,11 @@ static dap_chain_atom_verify_res_t s_chain_callback_atom_add(dap_chain_t * a_cha int l_consensus_check = s_dap_chain_add_atom_to_events_table(l_dag, a_chain->ledger, l_event_item); if(!l_consensus_check){ log_it(L_DEBUG, "... added"); + }else if (l_consensus_check == -5){ + log_it(L_DEBUG, "... tresholded"); + ret = ATOM_MOVE_TO_THRESHOLD; }else{ - log_it(L_DEBUG, "... error adding"); + log_it(L_DEBUG, "... error adding (code %d)", l_consensus_check); ret = ATOM_REJECT; } }