diff --git a/dap-sdk b/dap-sdk index 32ee5dddfa5641119add13d4334d3f37a90c4313..1111f90da0d94d4d464b767d1e36be3a5a5a58b1 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit 32ee5dddfa5641119add13d4334d3f37a90c4313 +Subproject commit 1111f90da0d94d4d464b767d1e36be3a5a5a58b1 diff --git a/modules/chain/dap_chain.c b/modules/chain/dap_chain.c index 0bf5ca47a6c9c7a182e61870deb53c57e5bdaebf..efcc10edb4c4a6cccc114fd9ab5218ebd92652f4 100644 --- a/modules/chain/dap_chain.c +++ b/modules/chain/dap_chain.c @@ -703,32 +703,32 @@ bool dap_chain_get_atom_last_hash(dap_chain_t *a_chain, dap_hash_fast_t *a_atom_ return l_ret; } -ssize_t dap_chain_atom_save(dap_chain_t *a_chain, const uint8_t *a_atom, size_t a_atom_size, dap_chain_cell_id_t a_cell_id) +ssize_t dap_chain_atom_save(dap_chain_cell_t *a_chain_cell, const uint8_t *a_atom, size_t a_atom_size, dap_hash_fast_t *a_new_atom_hash) { - dap_chain_cell_t *l_cell = dap_chain_cell_find_by_id(a_chain, a_cell_id); - if (!l_cell) { - log_it(L_INFO, "Creating cell 0x%016"DAP_UINT64_FORMAT_X, a_cell_id.uint64); - l_cell = dap_chain_cell_create_fill(a_chain, a_cell_id); - if (!l_cell) { - log_it(L_ERROR, "Can't create cell with id 0x%"DAP_UINT64_FORMAT_x" to save event...", a_cell_id.uint64); - return -7; - } + dap_chain_t *l_chain = (l_chain; + dap_return_val_if_fail(l_chain, -1); + + if (a_new_atom_hash) { // Atom is new and need to be distributed for the net + dap_cluster_t *l_net_cluster = dap_cluster_by_mnemonim(l_chain->net_name); + if (l_net_cluster) + dap_gossip_msg_issue(a_cluster->links_cluster, DAP_STREAM_CH_CHAIN_ID, + a_atom, a_atom_size, a_new_atom_hash); } - ssize_t l_res = dap_chain_cell_file_append(l_cell, a_atom, a_atom_size); - if (a_chain->atom_notifiers) { + ssize_t l_res = dap_chain_cell_file_append(a_chain_cell, a_atom, a_atom_size); + if (l_chain->atom_notifiers) { dap_list_t *l_iter; - DL_FOREACH(a_chain->atom_notifiers, l_iter) { + DL_FOREACH(l_chain->atom_notifiers, l_iter) { dap_chain_atom_notifier_t *l_notifier = (dap_chain_atom_notifier_t*)l_iter->data; - l_notifier->callback(l_notifier->arg, a_chain, l_cell->id, (void*)a_atom, a_atom_size); + l_notifier->callback(l_notifier->arg, l_chain, a_chain_cell->id, (void*)a_atom, a_atom_size); } } - if (a_chain->callback_atom_add_from_treshold) { + if (l_chain->callback_atom_add_from_treshold) { dap_chain_atom_ptr_t l_atom_treshold; do { size_t l_atom_treshold_size; - l_atom_treshold = a_chain->callback_atom_add_from_treshold(a_chain, &l_atom_treshold_size); + l_atom_treshold = l_chain->callback_atom_add_from_treshold(l_chain, &l_atom_treshold_size); if (l_atom_treshold) { - if (dap_chain_cell_file_append(l_cell, l_atom_treshold, l_atom_treshold_size) > 0) + if (dap_chain_cell_file_append(a_chain_cell, l_atom_treshold, l_atom_treshold_size) > 0) log_it(L_INFO, "Added atom from treshold"); else log_it(L_ERROR, "Can't add atom from treshold"); diff --git a/modules/chain/include/dap_chain.h b/modules/chain/include/dap_chain.h index 08cd3ab3bc0b0dca131845cebc0c3452c14b5ad0..cd90370807ec279a8e1c5a1910160f5c7cd23b3e 100644 --- a/modules/chain/include/dap_chain.h +++ b/modules/chain/include/dap_chain.h @@ -259,7 +259,7 @@ void dap_chain_delete(dap_chain_t * a_chain); void dap_chain_add_callback_notify(dap_chain_t * a_chain, dap_chain_callback_notify_t a_callback, void * a_arg); dap_chain_atom_ptr_t dap_chain_get_atom_by_hash(dap_chain_t * a_chain, dap_chain_hash_fast_t * a_atom_hash, size_t * a_atom_size); bool dap_chain_get_atom_last_hash(dap_chain_t *a_chain, dap_hash_fast_t *a_atom_hash, dap_chain_cell_id_t a_cel_id); -ssize_t dap_chain_atom_save(dap_chain_t *a_chain, const uint8_t *a_atom, size_t a_atom_size, dap_chain_cell_id_t a_cell_id); +ssize_t dap_chain_atom_save(dap_chain_cell_t *a_chain_cell, const uint8_t *a_atom, size_t a_atom_size, dap_hash_fast_t *a_new_atom_hash); int dap_cert_chain_file_save(dap_chain_datum_t *datum, char *net_name); const char* dap_chain_get_path(dap_chain_t *a_chain); 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 2481153ee9e1ba31919fad4cc0a66ef6eab738eb..14749e119fc946f9cb7f4b1fa57fd50142fce62e 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 @@ -133,7 +133,7 @@ static pthread_mutex_t s_ht_grace_table_mutex; int dap_stream_ch_chain_net_srv_init(void) { log_it(L_NOTICE,"Chain network services channel initialized"); - dap_stream_ch_proc_add(DAP_STREAM_CH_ID_NET_SRV, s_stream_ch_new,s_stream_ch_delete,s_stream_ch_packet_in,s_stream_ch_packet_out); + dap_stream_ch_proc_add(DAP_STREAM_CH_NET_SRV_ID, s_stream_ch_new,s_stream_ch_delete,s_stream_ch_packet_in,s_stream_ch_packet_out); pthread_mutex_init(&s_ht_grace_table_mutex, NULL); return 0; diff --git a/modules/channel/chain-net/dap_stream_ch_chain_net.c b/modules/channel/chain-net/dap_stream_ch_chain_net.c index fd0a2f8ca47aee266b1f731f1a90188825dd6448..28f683a478e3f73993399b3e571d948ff6355737 100644 --- a/modules/channel/chain-net/dap_stream_ch_chain_net.c +++ b/modules/channel/chain-net/dap_stream_ch_chain_net.c @@ -69,7 +69,7 @@ static void s_stream_ch_packet_out(dap_stream_ch_t* ch, void* arg); int dap_stream_ch_chain_net_init() { log_it(L_NOTICE, "Chain network channel initialized"); - dap_stream_ch_proc_add(DAP_STREAM_CH_ID_NET, s_stream_ch_new, s_stream_ch_delete, + dap_stream_ch_proc_add(DAP_STREAM_CH_NET_ID, s_stream_ch_new, s_stream_ch_delete, s_stream_ch_packet_in, s_stream_ch_packet_out); return 0; diff --git a/modules/channel/chain-net/include/dap_stream_ch_chain_net.h b/modules/channel/chain-net/include/dap_stream_ch_chain_net.h index 6838b09975b30d6d27be1d681819dc2150fe8bec..d9518d618364f34de559766974590d8824b9c6c7 100644 --- a/modules/channel/chain-net/include/dap_stream_ch_chain_net.h +++ b/modules/channel/chain-net/include/dap_stream_ch_chain_net.h @@ -61,7 +61,7 @@ typedef struct dap_stream_ch_chain_validator_test{ #define D_SIGN 0x40//data signed #define F_CERT 0x80//faund sert -#define DAP_STREAM_CH_ID_NET 'N' +#define DAP_STREAM_CH_NET_ID 'N' #define DAP_STREAM_CH_CHAIN_NET(a) ((dap_stream_ch_chain_net_t *) ((a)->internal) ) dap_chain_node_addr_t dap_stream_ch_chain_net_from_session_data_extract_node_addr(uint32_t a_session_id); diff --git a/modules/channel/chain-voting/dap_stream_ch_chain_voting.c b/modules/channel/chain-voting/dap_stream_ch_chain_voting.c index 926c12e0723450fc8cdea8a55d590054f0a9becd..b9ff167aa0727d1ef894e036c8449e9cdbebce66 100644 --- a/modules/channel/chain-voting/dap_stream_ch_chain_voting.c +++ b/modules/channel/chain-voting/dap_stream_ch_chain_voting.c @@ -42,7 +42,7 @@ int dap_stream_ch_chain_voting_init() log_it(L_NOTICE, "Chains voting channel initialized"); pthread_rwlock_init(&s_node_client_list_lock, NULL); - dap_stream_ch_proc_add(DAP_STREAM_CH_ID_VOTING, + dap_stream_ch_proc_add(DAP_STREAM_CH_VOTING_ID, s_stream_ch_new, s_stream_ch_delete, s_stream_ch_packet_in, @@ -99,7 +99,7 @@ void dap_stream_ch_chain_voting_message_write(dap_chain_net_t *a_net, dap_chain_ log_it(L_WARNING, "Can't find validator's addr "NODE_ADDR_FP_STR" in database", NODE_ADDR_FP_ARGS(a_remote_node_addr)); return; } - char l_channels[] = { DAP_STREAM_CH_ID_VOTING, '\0' }; + char l_channels[] = { DAP_STREAM_CH_VOTING_ID, '\0' }; dap_chain_node_client_t *l_node_client = dap_chain_node_client_connect_channels(a_net, l_node_info, l_channels); if (!l_node_client || !l_node_client->client) { log_it(L_ERROR, "Can't connect to remote node "NODE_ADDR_FP_STR, NODE_ADDR_FP_ARGS(a_remote_node_addr)); @@ -124,7 +124,7 @@ void dap_stream_ch_chain_voting_message_write(dap_chain_net_t *a_net, dap_chain_ log_it(L_ERROR, "NULL node_client in item of voting channel"); return; } - dap_chain_node_client_write_mt(l_node_client_item->node_client, DAP_STREAM_CH_ID_VOTING, + dap_chain_node_client_write_mt(l_node_client_item->node_client, DAP_STREAM_CH_VOTING_ID, DAP_STREAM_CH_CHAIN_VOTING_PKT_TYPE_DATA, a_voting_pkt, l_voting_pkt_size); } else diff --git a/modules/channel/chain-voting/include/dap_stream_ch_chain_voting.h b/modules/channel/chain-voting/include/dap_stream_ch_chain_voting.h index f55f67014b3fbedfd086279a0d3032c471ecf504..5f55d10dea0daee4f7209fb5d484fbf5ba52f438 100644 --- a/modules/channel/chain-voting/include/dap_stream_ch_chain_voting.h +++ b/modules/channel/chain-voting/include/dap_stream_ch_chain_voting.h @@ -12,7 +12,7 @@ #define DAP_STREAM_CH_CHAIN_VOTING_PKT_TYPE_TEST 0x02 #define DAP_STREAM_CH_CHAIN_VOTING_PKT_TYPE_ERROR 0xFF -#define DAP_STREAM_CH_ID_VOTING 'V' +#define DAP_STREAM_CH_VOTING_ID 'V' typedef void (*dap_chain_voting_ch_callback_t)(void *a_arg, dap_chain_node_addr_t *a_sender_addr, dap_chain_node_addr_t *a_receiver_addr, dap_chain_hash_fast_t *a_data_hash, uint8_t *a_data, size_t a_data_size); diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c index 106422dd480b9a02fd119568795f491eef41aaed..bc9e92affd9c6361b0dbf81b41cef0dc87f18703 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/channel/chain/dap_stream_ch_chain.c @@ -128,8 +128,6 @@ static void s_stream_ch_chain_pkt_write(dap_stream_ch_t *a_ch, uint8_t a_type, u static bool s_debug_more=false; static uint_fast16_t s_update_pack_size=100; // Number of hashes packed into the one packet static uint_fast16_t s_skip_in_reactor_count=50; // Number of hashes packed to skip in one reactor loop callback out packet -static char **s_list_ban_groups = NULL; -static char **s_list_white_groups = NULL; static uint16_t s_size_ban_groups = 0; static uint16_t s_size_white_groups = 0; @@ -152,13 +150,10 @@ static dap_memstat_rec_t s_memstat [MEMSTAT$K_NR] = { int dap_stream_ch_chain_init() { log_it(L_NOTICE, "Chains and global db exchange channel initialized"); - dap_stream_ch_proc_add(DAP_STREAM_CH_ID, s_stream_ch_new, s_stream_ch_delete, s_stream_ch_packet_in, + dap_stream_ch_proc_add(DAP_STREAM_CH_CHAIN_ID, s_stream_ch_new, s_stream_ch_delete, s_stream_ch_packet_in, s_stream_ch_packet_out); s_debug_more = dap_config_get_item_bool_default(g_config,"stream_ch_chain","debug_more",false); s_update_pack_size = dap_config_get_item_int16_default(g_config,"stream_ch_chain","update_pack_size",100); - s_list_ban_groups = dap_config_get_array_str(g_config, "stream_ch_chain", "ban_list_sync_groups", &s_size_ban_groups); - s_list_white_groups = dap_config_get_array_str(g_config, "stream_ch_chain", "white_list_sync_groups", &s_size_white_groups); - #ifdef DAP_SYS_DEBUG for (int i = 0; i < MEMSTAT$K_NR; i++) dap_memstat_reg(&s_memstat[i]); @@ -595,7 +590,7 @@ static bool s_sync_in_chains_callback(void *a_arg) if (s_debug_more) { log_it(L_INFO,"Accepted atom with hash %s for %s:%s", l_atom_hash_str, l_chain->net_name, l_chain->name); } - int l_res = dap_chain_atom_save(l_chain, l_atom_copy, l_atom_copy_size, l_sync_request->request_hdr.cell_id); + int l_res = dap_chain_atom_save(l_chain->cells, l_atom_copy, l_atom_copy_size, NULL); if(l_res < 0) { log_it(L_ERROR, "Can't save atom %s to the file", l_atom_hash_str); } else { @@ -1490,7 +1485,7 @@ static void s_stream_ch_io_complete(dap_events_socket_t *a_es, void *a_arg, int return; dap_stream_ch_t *l_ch = NULL; for (size_t i = 0; i < l_stream->channel_count; i++) - if (l_stream->channel[i]->proc->id == DAP_STREAM_CH_ID) + if (l_stream->channel[i]->proc->id == DAP_STREAM_CH_CHAIN_ID) l_ch = l_stream->channel[i]; if (!l_ch || !DAP_STREAM_CH_CHAIN(l_ch)) return; diff --git a/modules/channel/chain/include/dap_stream_ch_chain.h b/modules/channel/chain/include/dap_stream_ch_chain.h index 830725239d7b03560b42190dbf52f93eb31e2131..3598ebd9b6b6a96ce804176efd58bbad9d841fcd 100644 --- a/modules/channel/chain/include/dap_stream_ch_chain.h +++ b/modules/channel/chain/include/dap_stream_ch_chain.h @@ -89,7 +89,7 @@ typedef struct dap_stream_ch_chain { #define DAP_STREAM_CH_CHAIN(a) ((dap_stream_ch_chain_t *) ((a)->internal) ) #define DAP_STREAM_CH(a) ((dap_stream_ch_t *)((a)->_inheritor)) #define DAP_CHAIN_PKT_EXPECT_SIZE 7168 -#define DAP_STREAM_CH_ID 'C' +#define DAP_STREAM_CH_CHAIN_ID 'C' int dap_stream_ch_chain_init(void); void dap_stream_ch_chain_deinit(void); diff --git a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c index 76388e5da89764ed2957b9f8b604657afa648ea2..bff0dc5aa14c80f7a143483202070298f63e1983 100644 --- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c +++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c @@ -613,15 +613,17 @@ static bool s_callback_round_event_to_chain_callback_get_round_item(dap_global_d if (l_chosen_item) { size_t l_event_size = l_chosen_item->event_size; dap_chain_cs_dag_event_t *l_new_atom = (dap_chain_cs_dag_event_t *)DAP_DUP_SIZE(l_chosen_item->event_n_signs, l_event_size); - char *l_event_hash_hex_str; - dap_get_data_hash_str_static(l_new_atom, l_event_size, l_event_hash_hex_str); + dap_hash_fast_t l_event_hash; + dap_hash_fast(l_new_atom, l_event_size, &l_event_hash); + char *l_event_hash_hex_str = DAP_NEW_STACK_SIZE(char, DAP_CHAIN_HASH_FAST_STR_SIZE); + dap_chain_hash_fast_to_str(&l_event_hash, l_event_hash_hex_str, DAP_CHAIN_HASH_FAST_STR_SIZE); dap_chain_datum_t *l_datum = dap_chain_cs_dag_event_get_datum(l_new_atom, l_event_size); l_dag->round_completed = dap_max(l_new_atom->header.round_id, l_dag->round_current); int l_verify_datum = dap_chain_net_verify_datum_for_add(l_dag->chain, l_datum, &l_chosen_item->round_info.datum_hash); if (!l_verify_datum) { dap_chain_atom_verify_res_t l_res = l_dag->chain->callback_atom_add(l_dag->chain, l_new_atom, l_event_size); if (l_res == ATOM_ACCEPT) { - dap_chain_atom_save(l_dag->chain, (dap_chain_atom_ptr_t)l_new_atom, l_event_size, l_dag->chain->cells->id); + dap_chain_atom_save(l_dag->chain->cells, (dap_chain_atom_ptr_t)l_new_atom, l_event_size, &l_event_hash); s_poa_round_clean(l_dag->chain); } else if (l_res != ATOM_MOVE_TO_THRESHOLD) DAP_DELETE(l_new_atom); diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index b6f5152bba6c2d4f2aafb355d2077fb41db72dd7..4a1e64b677446de2a71c312a8e13f83e1e8c11c6 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -1539,7 +1539,7 @@ static bool s_session_candidate_to_chain(dap_chain_esbocs_session_t *a_session, switch (l_res) { case ATOM_ACCEPT: // block save to chain - if (dap_chain_atom_save(a_session->chain, (uint8_t *)l_candidate, a_candidate_size, a_session->chain->cells->id) < 0) + if (dap_chain_atom_save(a_session->chain->cells, (uint8_t *)l_candidate, a_candidate_size, a_candidate_hash) < 0) log_it(L_ERROR, "Can't save atom %s to the file", l_candidate_hash_str); else { diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index fe299af84a87860303373151cb3301ede4ed43e3..d8ad7b8b7cf7a06fc6836c0b98ac0d42ed6b8d79 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -543,7 +543,7 @@ static bool s_net_link_callback_connect_delayed(void *a_arg) dap_chain_node_client_t *l_client = l_link->link; log_it(L_MSG, "Connecting to link "NODE_ADDR_FP_STR" [%s]", NODE_ADDR_FP_ARGS_S(l_client->info->hdr.address), inet_ntoa(l_client->info->hdr.ext_addr_v4)); - dap_chain_node_client_connect(l_client, "GND"); + dap_chain_node_client_connect(l_client, "CGND"); l_link->delay_timer = NULL; return false; } @@ -563,7 +563,7 @@ static bool s_net_link_start(dap_chain_net_t *a_net, struct net_link *a_link, ui return true; } log_it(L_MSG, "Connecting to link "NODE_ADDR_FP_STR" [%s]", NODE_ADDR_FP_ARGS_S(l_link_info->hdr.address), inet_ntoa(l_link_info->hdr.ext_addr_v4)); - return dap_chain_node_client_connect(l_client, "GND"); + return dap_chain_node_client_connect(l_client, "CGND"); } /** diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index 8e56d3d88195e23f1c0375e6db3683f89cfe9f52..f4f9ecf428ae685e93a901de3bae6272bc626213 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -1317,7 +1317,7 @@ int com_node(int a_argc, char ** a_argv, void **a_str_reply) log_it(L_NOTICE, "Stream connection established"); dap_stream_ch_chain_sync_request_t l_sync_request = {}; - dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch_unsafe(l_node_client->client, DAP_STREAM_CH_ID); + dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch_unsafe(l_node_client->client, DAP_STREAM_CH_CHAIN_ID); // fill begin id l_sync_request.id_start = 1; // fill current node address diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c index fab62802869d5e1f002063209ddde223a555baf0..7b0c9473fa988906a37cf0cd5a5f8508e3a4af54 100644 --- a/modules/net/dap_chain_node_client.c +++ b/modules/net/dap_chain_node_client.c @@ -192,11 +192,12 @@ dap_chain_node_sync_status_t dap_chain_node_client_start_sync(dap_chain_node_cli bool l_trylocked = dap_chain_net_sync_trylock(l_net, a_node_client); if (l_trylocked) { log_it(L_INFO, "Start synchronization process with "NODE_ADDR_FP_STR, NODE_ADDR_FP_ARGS_S(a_node_client->remote_node_addr)); - dap_stream_ch_chain_sync_request_t l_sync_gdb = {}; + dap_stream_ch_chain_sync_request_t l_sync_chain = {}; l_sync_gdb.node_addr.uint64 = dap_chain_net_get_cur_addr_int(l_net); - dap_stream_ch_chain_pkt_write_unsafe(a_node_client->ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_GLOBAL_DB_REQ, - l_net->pub.id.uint64, 0, 0, - &l_sync_gdb, sizeof(l_sync_gdb)); + dap_stream_ch_chain_pkt_write_unsafe(a_node_client->ch_chain, + DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_CHAINS_REQ, + l_net->pub.id.uint64, l_net->pub.chains->id, 0, + &l_sync_chain, sizeof(l_sync_chain)); if (!l_ch_chain->activity_timer) dap_stream_ch_chain_timer_start(l_ch_chain); return NODE_SYNC_STATUS_STARTED; @@ -229,7 +230,7 @@ static bool s_timer_update_states_callback(void *a_arg) l_me->callbacks.disconnected(l_me, l_me->callbacks_arg); if (l_me->keep_connection) { log_it(L_INFO, "Reconnecting node client with peer "NODE_ADDR_FP_STR, NODE_ADDR_FP_ARGS_S(l_me->remote_node_addr)); - l_me->state = NODE_CLIENT_STATE_CONNECTING ; + l_me->state = NODE_CLIENT_STATE_CONNECTING; dap_client_go_stage(l_me->client, STAGE_STREAM_STREAMING, s_stage_connected_callback); } } @@ -930,7 +931,7 @@ static int s_node_client_set_notify_callbacks(dap_client_t *a_client, uint8_t a_ l_ret = 0; switch (a_ch_id) { // 'C' - case DAP_STREAM_CH_ID: { + case DAP_STREAM_CH_CHAIN_ID: { dap_stream_ch_chain_t *l_ch_chain = DAP_STREAM_CH_CHAIN(l_ch); l_ch_chain->callback_notify_packet_out = s_ch_chain_callback_notify_packet_out; l_ch_chain->callback_notify_packet_in = s_ch_chain_callback_notify_packet_in; @@ -940,7 +941,7 @@ static int s_node_client_set_notify_callbacks(dap_client_t *a_client, uint8_t a_ break; } // 'N' - case DAP_STREAM_CH_ID_NET: { + case DAP_STREAM_CH_NET_ID: { dap_stream_ch_chain_net_t *l_ch_chain = DAP_STREAM_CH_CHAIN_NET(l_ch); l_ch_chain->notify_callback = s_ch_chain_callback_notify_packet_in2; l_ch_chain->notify_callback_arg = l_node_client; @@ -949,7 +950,7 @@ static int s_node_client_set_notify_callbacks(dap_client_t *a_client, uint8_t a_ break; } // 'R' - case DAP_STREAM_CH_ID_NET_SRV: { + case DAP_STREAM_CH_NET_SRV_ID: { dap_stream_ch_chain_net_srv_t *l_ch_chain = DAP_STREAM_CH_CHAIN_NET_SRV(l_ch); if (l_node_client->notify_callbacks.srv_pkt_in) { l_ch_chain->notify_callback = (dap_stream_ch_chain_net_srv_callback_packet_t)l_node_client->notify_callbacks.srv_pkt_in; @@ -963,7 +964,7 @@ static int s_node_client_set_notify_callbacks(dap_client_t *a_client, uint8_t a_ break; } // 'V' - case DAP_STREAM_CH_ID_VOTING: { + case DAP_STREAM_CH_VOTING_ID: { dap_stream_ch_chain_voting_t *l_ch_chain = DAP_STREAM_CH_CHAIN_VOTING(l_ch); // l_ch_chain->callback_notify = s_ch_chain_callback_notify_voting_packet_in; l_ch_chain->callback_notify_arg = l_node_client; diff --git a/modules/net/srv/dap_chain_net_srv_client.c b/modules/net/srv/dap_chain_net_srv_client.c index d05c7c95c99ed5a8db7f0613a703e93dc69fdef1..11d7fc5e69a55486855fde1e0a7adc127e1c32ea 100644 --- a/modules/net/srv/dap_chain_net_srv_client.c +++ b/modules/net/srv/dap_chain_net_srv_client.c @@ -64,7 +64,7 @@ dap_chain_net_srv_client_t *dap_chain_net_srv_client_create_n_connect(dap_chain_ } inet_pton(AF_INET, a_addr, &l_info->hdr.ext_addr_v4); l_info->hdr.ext_port = a_port; - const char l_channels[] = {DAP_STREAM_CH_ID_NET_SRV, '\0'}; + const char l_channels[] = {DAP_STREAM_CH_NET_SRV_ID, '\0'}; l_ret->node_client = dap_chain_node_client_create_n_connect(a_net, l_info, l_channels, &l_callbacks, l_ret); @@ -82,7 +82,7 @@ ssize_t dap_chain_net_srv_client_write(dap_chain_net_srv_client_t *a_client, uin if (!a_client || !a_client->net_client || dap_client_get_stage(a_client->net_client) != STAGE_STREAM_STREAMING) return -1; if (a_type == DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_REQUEST) { - dap_stream_ch_t *l_ch = dap_client_get_stream_ch_unsafe(a_client->net_client, DAP_STREAM_CH_ID_NET_SRV); + dap_stream_ch_t *l_ch = dap_client_get_stream_ch_unsafe(a_client->net_client, DAP_STREAM_CH_NET_SRV_ID); dap_stream_ch_chain_net_srv_t *a_ch_chain = DAP_STREAM_CH_CHAIN_NET_SRV(l_ch); dap_stream_ch_chain_net_srv_pkt_request_t *l_request = (dap_stream_ch_chain_net_srv_pkt_request_t *)a_pkt_data; a_ch_chain->srv_uid.uint64 = l_request->hdr.srv_uid.uint64; 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 3d226a3a562ea6bd068d57fb710d165961c2b60b..1e2534e5e4e21d77cd2ba9f7ba36537a1a1bb34d 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 @@ -2185,7 +2185,7 @@ int dap_chain_net_srv_stake_check_validator(dap_chain_net_t * a_net, dap_hash_fa } log_it(L_NOTICE, "Stream connection established"); - uint8_t l_ch_id = DAP_STREAM_CH_ID_NET; + uint8_t l_ch_id = DAP_STREAM_CH_NET_ID; dap_stream_ch_t * l_ch_chain = dap_client_get_stream_ch_unsafe(l_node_client->client, l_ch_id); randombytes(l_test_data, sizeof(l_test_data)); diff --git a/modules/service/vpn/dap_chain_net_srv_vpn.c b/modules/service/vpn/dap_chain_net_srv_vpn.c index 8da57ebddb7c2b1f562415801d4f675ad560a541..3cd1c8e5946f9325ef094d128d2ca72fa5c487a1 100644 --- a/modules/service/vpn/dap_chain_net_srv_vpn.c +++ b/modules/service/vpn/dap_chain_net_srv_vpn.c @@ -902,7 +902,7 @@ int dap_chain_net_srv_vpn_init(dap_config_t * g_config) { log_it(L_INFO,"TUN driver configured successfuly"); s_vpn_service_create(g_config); - dap_stream_ch_proc_add(DAP_STREAM_CH_ID_NET_SRV_VPN, s_ch_vpn_new, s_ch_vpn_delete, s_ch_packet_in, + dap_stream_ch_proc_add(DAP_STREAM_CH_NET_SRV_ID_VPN, s_ch_vpn_new, s_ch_vpn_delete, s_ch_packet_in, s_ch_packet_out); // add console command to display vpn statistics diff --git a/modules/service/vpn/dap_chain_net_vpn_client.c b/modules/service/vpn/dap_chain_net_vpn_client.c index f9278506e8d93b569dbcafd653b5f391d4ae7cf7..68fd1d2b17f335dfeea71e9fc18e28bf3746e82d 100644 --- a/modules/service/vpn/dap_chain_net_vpn_client.c +++ b/modules/service/vpn/dap_chain_net_vpn_client.c @@ -99,7 +99,7 @@ dap_stream_worker_t* dap_chain_net_vpn_client_get_stream_worker(void) dap_stream_ch_t* dap_chain_net_vpn_client_get_stream_ch(void) { - return s_vpn_client ? dap_client_get_stream_ch_unsafe(s_vpn_client->client, DAP_STREAM_CH_ID_NET_SRV_VPN) : NULL; + return s_vpn_client ? dap_client_get_stream_ch_unsafe(s_vpn_client->client, DAP_STREAM_CH_NET_SRV_ID_VPN) : NULL; } /// TODO convert below callback to processor of stage @@ -515,7 +515,7 @@ int dap_chain_net_vpn_client_check(dap_chain_net_t *a_net, const char *a_ipv4_st clock_gettime(CLOCK_REALTIME, &l_t);//get_cur_time_msec long l_t1 = l_t.tv_sec * 1000 + l_t.tv_nsec / 1e6; - const char l_active_channels[] = { DAP_STREAM_CH_ID_NET_SRV, 0 }; //only R, without S + const char l_active_channels[] = { DAP_STREAM_CH_NET_SRV_ID, 0 }; //only R, without S if(a_ipv4_str) inet_pton(AF_INET, a_ipv4_str, &(s_node_info->hdr.ext_addr_v4)); if(a_ipv6_str) @@ -545,7 +545,7 @@ int dap_chain_net_vpn_client_check(dap_chain_net_t *a_net, const char *a_ipv4_st int l_dtime_connect_ms = l_t2 - l_t1; { - uint8_t l_ch_id = DAP_STREAM_CH_ID_NET_SRV; // Channel id for chain net request = 'R' + uint8_t l_ch_id = DAP_STREAM_CH_NET_SRV_ID; // Channel id for chain net request = 'R' dap_stream_ch_t *l_ch = dap_client_get_stream_ch_unsafe(s_vpn_client->client, l_ch_id); if(l_ch) { typedef dap_stream_ch_chain_net_srv_pkt_test_t pkt_t; @@ -603,7 +603,7 @@ int dap_chain_net_vpn_client_start(dap_chain_net_t *a_net, const char *a_ipv4_st s_node_info = DAP_NEW_Z(dap_chain_node_info_t); s_node_info->hdr.ext_port = a_port; - const char l_active_channels[] = { DAP_STREAM_CH_ID_NET_SRV, DAP_STREAM_CH_ID_NET_SRV_VPN, 0 }; //R, S + const char l_active_channels[] = { DAP_STREAM_CH_NET_SRV_ID, DAP_STREAM_CH_NET_SRV_ID_VPN, 0 }; //R, S if(a_ipv4_str) inet_pton(AF_INET, a_ipv4_str, &(s_node_info->hdr.ext_addr_v4)); if(a_ipv6_str) @@ -634,7 +634,7 @@ int dap_chain_net_vpn_client_start(dap_chain_net_t *a_net, const char *a_ipv4_st // send first packet to server { - uint8_t l_ch_id = DAP_STREAM_CH_ID_NET_SRV; // Channel id for chain net request = 'R' + uint8_t l_ch_id = DAP_STREAM_CH_NET_SRV_ID; // Channel id for chain net request = 'R' dap_stream_ch_t *l_ch = dap_client_get_stream_ch_unsafe(s_vpn_client->client, l_ch_id); if(l_ch) { dap_stream_ch_chain_net_srv_pkt_request_t l_request; @@ -676,7 +676,7 @@ int dap_chain_net_vpn_client_stop(void) dap_chain_net_vpn_client_status_t dap_chain_net_vpn_client_status(void) { if(s_vpn_client) { - uint8_t l_ch_id = DAP_STREAM_CH_ID_NET_SRV; // Channel id for chain net request = 'R' + uint8_t l_ch_id = DAP_STREAM_CH_NET_SRV_ID; // Channel id for chain net request = 'R' dap_stream_ch_t *l_ch = dap_client_get_stream_ch_unsafe(s_vpn_client->client, l_ch_id); if(!l_ch) return VPN_CLIENT_STATUS_CONN_LOST; diff --git a/modules/service/vpn/include/dap_chain_net_srv_vpn.h b/modules/service/vpn/include/dap_chain_net_srv_vpn.h index 8a844bbd01626c279407f921189971b32de684bb..82cccff2fa0364d805b390265c7389c06adfb048 100644 --- a/modules/service/vpn/include/dap_chain_net_srv_vpn.h +++ b/modules/service/vpn/include/dap_chain_net_srv_vpn.h @@ -34,7 +34,7 @@ #define DAP_STREAM_CH_PKT_TYPE_NET_SRV_VPN_CLIENT 0x01 #define DAP_STREAM_CH_PKT_TYPE_NET_SRV_VPN_DATA 0x02 -#define DAP_STREAM_CH_ID_NET_SRV_VPN 'S' +#define DAP_STREAM_CH_NET_SRV_ID_VPN 'S' #define DAP_CHAIN_NET_SRV_VPN_ID 0x0000000000000001 diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index c03c7c942e92a6ecfa39cde92f09a185c771f172..ba7e6339d69f4fb2308339b84b0fa557c36421da 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -724,12 +724,13 @@ static bool s_chain_callback_datums_pool_proc(dap_chain_t *a_chain, dap_chain_da log_it(L_ERROR,"Can't create new event!"); return false; } - + dap_hash_fast_t l_event_hash; + dap_hash_fast(l_new_atom, l_event_size, &l_event_hash); if (l_dag->is_add_directly) { dap_chain_atom_verify_res_t l_verify_res; switch (l_verify_res = s_chain_callback_atom_add(a_chain, l_event, l_event_size)) { case ATOM_ACCEPT: - return dap_chain_atom_save(a_chain, (uint8_t *)l_event, l_event_size, a_chain->cells->id) > 0; + return dap_chain_atom_save(a_chain->cells, (uint8_t *)l_event, l_event_size, &l_event_hash) > 0; default: log_it(L_ERROR, "Can't add new event to the file, atom verification result %d", l_verify_res); return false; @@ -739,8 +740,8 @@ static bool s_chain_callback_datums_pool_proc(dap_chain_t *a_chain, dap_chain_da dap_global_db_set_sync(l_dag->gdb_group_events_round_new, DAG_ROUND_CURRENT_KEY, &l_current_round, sizeof(uint64_t), false); dap_chain_cs_dag_event_round_item_t l_round_item = { .round_info.datum_hash = l_datum_hash }; - char *l_event_hash_str; - dap_get_data_hash_str_static(l_event, l_event_size, l_event_hash_str); + char *l_event_hash_hex_str = DAP_NEW_STACK_SIZE(char, DAP_CHAIN_HASH_FAST_STR_SIZE); + dap_chain_hash_fast_to_str(&l_event_hash, l_event_hash_hex_str, DAP_CHAIN_HASH_FAST_STR_SIZE); bool l_res = dap_chain_cs_dag_event_gdb_set(l_dag, l_event_hash_str, l_event, l_event_size, &l_round_item); log_it(l_res ? L_INFO : L_ERROR, l_res ? "Event %s placed in the new forming round [id %"DAP_UINT64_FORMAT_U"]"