diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c index 5965ce773dbe21a036985be44e6241cfa58bf016..420057c06a31abe110435b465c86b313639a626f 100644 --- a/dap-sdk/net/core/dap_worker.c +++ b/dap-sdk/net/core/dap_worker.c @@ -157,7 +157,6 @@ void *dap_worker_thread(void *arg) log_it(L_INFO, "Client socket disconnected"); dap_events_socket_set_readable_unsafe(l_cur, false); l_cur->flags |= DAP_SOCK_SIGNAL_CLOSE; - //l_epoll_events[n].events &= ~EPOLLIN; } if(l_epoll_events[n].events & EPOLLIN) { @@ -242,7 +241,7 @@ void *dap_worker_thread(void *arg) l_cur->flags |= DAP_SOCK_SIGNAL_CLOSE; } } - else { + else if (!(l_epoll_events[n].events & EPOLLRDHUP) || !(l_epoll_events[n].events & EPOLLERR)) { log_it(L_WARNING, "EPOLLIN triggered but nothing to read"); dap_events_socket_set_readable_unsafe(l_cur,false); } diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c index 98bf5093dd3212c6dfc39fab8bb661cd240c9267..119cc5b7ba7317d6969e05139939a9af9a77efd0 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/channel/chain/dap_stream_ch_chain.c @@ -232,7 +232,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) dap_chain_node_addr_t l_node_addr = { 0 }; dap_chain_net_t *l_net = dap_chain_net_by_id(l_ch_chain->request_net_id); l_node_addr.uint64 = l_net ? dap_db_get_cur_node_addr(l_net->pub.name) : 0; - dap_stream_ch_chain_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_CHAIN, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_CHAIN, l_ch_chain->request_net_id, l_ch_chain->request_chain_id, l_ch_chain->request_cell_id, &l_node_addr, sizeof(dap_chain_node_addr_t)); } @@ -240,7 +240,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) // last packet dap_stream_ch_chain_sync_request_t l_request = { { 0 } }; l_request.id_start = 0;//dap_db_log_get_last_id_remote(l_ch_chain->request.node_addr.uint64); - dap_stream_ch_chain_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_CHAINS, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_CHAINS, l_ch_chain->request_net_id, l_ch_chain->request_chain_id, l_ch_chain->request_cell_id, &l_request, sizeof(l_request)); l_ch_chain->state = CHAIN_STATE_IDLE; @@ -298,7 +298,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) dap_chain_node_addr_t l_node_addr = { 0 }; dap_chain_net_t *l_net = dap_chain_net_by_id(l_ch_chain->request_net_id); l_node_addr.uint64 = l_net ? dap_db_get_cur_node_addr(l_net->pub.name) : 0; - dap_stream_ch_chain_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB, l_ch_chain->request_net_id, l_ch_chain->request_chain_id, l_ch_chain->request_cell_id, &l_node_addr, sizeof(dap_chain_node_addr_t)); @@ -306,7 +306,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) dap_chain_node_addr_t l_node_addr = { 0 }; dap_chain_net_t *l_net = dap_chain_net_by_id(l_ch_chain->request_net_id); l_node_addr.uint64 = l_net ? dap_db_get_cur_node_addr(l_net->pub.name) : 0; - dap_stream_ch_chain_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB, l_ch_chain->request_net_id, l_ch_chain->request_chain_id, l_ch_chain->request_cell_id, &l_node_addr, sizeof(dap_chain_node_addr_t)); @@ -314,7 +314,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) //log_it(L_DEBUG, "No items to sync from %u", l_request->id_start + 1); l_request.node_addr.uint64 = l_net ? dap_db_get_cur_node_addr(l_net->pub.name) : 0; l_request.id_start = dap_db_log_get_last_id_remote(l_ch_chain->request.node_addr.uint64); - dap_stream_ch_chain_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB, l_ch_chain->request_net_id, l_ch_chain->request_chain_id, l_ch_chain->request_cell_id, &l_request, sizeof(l_request)); // dap_stream_ch_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB ,&l_request, @@ -507,12 +507,12 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) l_sync_gdb.id_start = (uint64_t) dap_db_log_get_last_id_remote(l_ch_chain->request.node_addr.uint64); // no limit l_sync_gdb.id_end = (uint64_t)0; - dap_stream_ch_chain_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB, l_chain_pkt->hdr.net_id, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB, l_chain_pkt->hdr.net_id, l_chain_pkt->hdr.chain_id, l_chain_pkt->hdr.cell_id, &l_sync_gdb, sizeof(l_sync_gdb)); } case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS_RVRS: { dap_stream_ch_chain_sync_request_t l_sync_chains = {}; - dap_stream_ch_chain_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS, l_chain_pkt->hdr.net_id, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS, l_chain_pkt->hdr.net_id, l_chain_pkt->hdr.chain_id, l_chain_pkt->hdr.cell_id, &l_sync_chains, sizeof(l_sync_chains)); } default: { @@ -614,7 +614,7 @@ void s_stream_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) else { //log_it(L_INFO, "Send one global_db record data=0x%x len=%d (rest=%d/%d items)", l_item, l_item_size_out, // l_items_rest, l_items_total); - dap_stream_ch_chain_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_GLOBAL_DB, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_GLOBAL_DB, l_ch_chain->request_net_id, l_ch_chain->request_chain_id, l_ch_chain->request_cell_id, l_item, l_item_size_out); l_ch_chain->stats_request_gdb_processed++; @@ -663,7 +663,7 @@ void s_stream_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) log_it( L_DEBUG,"Syncronized database: last id %llu, items syncronyzed %llu ", l_request.id_start, l_ch_chain->stats_request_gdb_processed ); - dap_stream_ch_chain_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB, l_ch_chain->request_net_id, l_ch_chain->request_chain_id, l_ch_chain->request_cell_id, &l_request, sizeof(l_request)); @@ -703,7 +703,7 @@ void s_stream_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_CHAINS : DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_ALL; // last message - dap_stream_ch_chain_pkt_write(a_ch, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, l_send_pkt_type, l_ch_chain->request_net_id, l_ch_chain->request_chain_id, l_ch_chain->request_cell_id, &l_request, sizeof(l_request)); @@ -730,7 +730,7 @@ void s_stream_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) // Then flush it out to the remote size_t l_atom_size = l_chain->callback_atom_get_size(l_atom_item->atom); - dap_stream_ch_chain_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN, l_ch_chain->request_net_id, + dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN, l_ch_chain->request_net_id, l_ch_chain->request_chain_id, l_ch_chain->request_cell_id, l_atom_item->atom, l_atom_size); l_ch_chain->stats_request_atoms_processed++; diff --git a/modules/channel/chain/dap_stream_ch_chain_pkt.c b/modules/channel/chain/dap_stream_ch_chain_pkt.c index 6b6580240f51eb5314640fecf38799f7eb9f1bc2..aff9bb6776766e85658ab948cebc8a85dad55c79 100644 --- a/modules/channel/chain/dap_stream_ch_chain_pkt.c +++ b/modules/channel/chain/dap_stream_ch_chain_pkt.c @@ -48,7 +48,7 @@ dap_stream_ch_chain_state_t dap_stream_ch_chain_pkt_type_to_dap_stream_ch_chain_ * @param data_size * @return */ -size_t dap_stream_ch_chain_pkt_write(dap_stream_ch_t *a_ch, uint8_t a_type,dap_chain_net_id_t a_net_id, +size_t dap_stream_ch_chain_pkt_write_unsafe(dap_stream_ch_t *a_ch, uint8_t a_type,dap_chain_net_id_t a_net_id, dap_chain_id_t a_chain_id, dap_chain_cell_id_t a_cell_id, const void * a_data, size_t a_data_size) { @@ -67,3 +67,23 @@ size_t dap_stream_ch_chain_pkt_write(dap_stream_ch_t *a_ch, uint8_t a_type,dap_c DAP_DELETE(l_chain_pkt); return l_ret; } + +size_t dap_stream_ch_chain_pkt_write_mt(dap_stream_worker_t *a_worker, dap_stream_ch_t *a_ch, uint8_t a_type,dap_chain_net_id_t a_net_id, + dap_chain_id_t a_chain_id, dap_chain_cell_id_t a_cell_id, + const void * a_data, size_t a_data_size) +{ + dap_stream_ch_chain_pkt_t * l_chain_pkt; + size_t l_chain_pkt_size = sizeof (l_chain_pkt->hdr) + a_data_size; + l_chain_pkt = DAP_NEW_Z_SIZE(dap_stream_ch_chain_pkt_t, l_chain_pkt_size ); + l_chain_pkt->hdr.version = 1; + l_chain_pkt->hdr.net_id.uint64 = a_net_id.uint64; + l_chain_pkt->hdr.cell_id.uint64 = a_cell_id.uint64; + l_chain_pkt->hdr.chain_id.uint64 = a_chain_id.uint64; + + if (a_data_size && a_data) + memcpy( l_chain_pkt->data, a_data, a_data_size); + + size_t l_ret = dap_stream_ch_pkt_write_mt(a_worker, a_ch, a_type , l_chain_pkt, l_chain_pkt_size); + DAP_DELETE(l_chain_pkt); + return l_ret; +} diff --git a/modules/channel/chain/include/dap_stream_ch_chain_pkt.h b/modules/channel/chain/include/dap_stream_ch_chain_pkt.h index 47903691f86ad4677b5cb46bf7eeb8c9fc68ed0f..5091c15534a7643ff8f11c43245a4f6e1f439849 100644 --- a/modules/channel/chain/include/dap_stream_ch_chain_pkt.h +++ b/modules/channel/chain/include/dap_stream_ch_chain_pkt.h @@ -97,12 +97,16 @@ static const char* c_dap_stream_ch_chain_pkt_type_str[]={ dap_stream_ch_chain_state_t dap_stream_ch_chain_pkt_type_to_dap_stream_ch_chain_state(char a_state); -size_t dap_stream_ch_chain_pkt_write(dap_stream_ch_t *a_ch, uint8_t a_type,dap_chain_net_id_t a_net_id, - dap_chain_id_t a_chain_id, dap_chain_cell_id_t a_cell_id, - const void * a_data, size_t a_data_size); +size_t dap_stream_ch_chain_pkt_write_unsafe(dap_stream_ch_t *a_ch, uint8_t a_type, dap_chain_net_id_t a_net_id, + dap_chain_id_t a_chain_id, dap_chain_cell_id_t a_cell_id, + const void * a_data, size_t a_data_size); + +size_t dap_stream_ch_chain_pkt_write_mt(dap_stream_worker_t *a_worker, dap_stream_ch_t *a_ch, uint8_t a_type, dap_chain_net_id_t a_net_id, + dap_chain_id_t a_chain_id, dap_chain_cell_id_t a_cell_id, + const void * a_data, size_t a_data_size); inline static size_t dap_stream_ch_chain_pkt_write_error(dap_stream_ch_t *a_ch, dap_chain_net_id_t a_net_id, dap_chain_id_t a_chain_id, dap_chain_cell_id_t a_cell_id, const char * a_err_string ) { - return dap_stream_ch_chain_pkt_write( a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_ERROR, a_net_id, a_chain_id, a_cell_id, a_err_string,strlen (a_err_string)+1 ); + return dap_stream_ch_chain_pkt_write_unsafe( a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_ERROR, a_net_id, a_chain_id, a_cell_id, a_err_string,strlen (a_err_string)+1 ); } diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 9263c5cfcf70ec6a4441053fd7c4a58d50dabd38..887be69c07e3d2ce86ff94194262325b0bcc61c4 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -272,7 +272,7 @@ void dap_chain_net_sync_gdb_broadcast(void *a_arg, const char a_op_code, const c for (dap_list_t *l_tmp = PVT(l_net)->links; l_tmp; l_tmp = dap_list_next(l_tmp)) { dap_chain_node_client_t *l_node_client = (dap_chain_node_client_t *)l_tmp->data; dap_stream_ch_t *l_ch_chain = dap_client_get_stream_ch(l_node_client->client, dap_stream_ch_chain_get_id()); - dap_stream_ch_chain_pkt_write(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_GLOBAL_DB, l_net->pub.id, + dap_stream_ch_chain_pkt_write_unsafe(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_GLOBAL_DB, l_net->pub.id, l_chain_id, l_net->pub.cell_id, l_data_out, sizeof(dap_store_obj_pkt_t) + l_data_out->data_size); } DAP_DELETE(l_data_out); @@ -321,7 +321,7 @@ static void s_chain_callback_notify(void * a_arg, dap_chain_t *a_chain, dap_chai log_it(L_DEBUG,"Can't get stream_ch for id='%c' ", l_ch_id); continue; } - dap_stream_ch_chain_pkt_write(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN, l_net->pub.id, + dap_stream_ch_chain_pkt_write_unsafe(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN, l_net->pub.id, a_chain->id, a_id, a_atom, a_atom_size); } } @@ -467,6 +467,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net) l_pvt_net->links = dap_list_remove(l_pvt_net->links, l_node_client); continue; } + dap_stream_worker_t *l_worker = dap_client_get_stream_worker(l_node_client->client); dap_stream_ch_chain_sync_request_t l_sync_gdb = {}; // Get last timestamp in log l_sync_gdb.id_start = (uint64_t) dap_db_log_get_last_id_remote(l_node_client->remote_node_addr.uint64); @@ -481,8 +482,8 @@ static int s_net_states_proc(dap_chain_net_t * l_net) dap_chain_t *l_chain = dap_chain_net_get_chain_by_name(l_net, "gdb"); dap_chain_id_t l_chain_id = l_chain ? l_chain->id : (dap_chain_id_t ) {}; - size_t l_res = dap_stream_ch_chain_pkt_write(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB, l_net->pub.id, - l_chain_id, l_net->pub.cell_id, &l_sync_gdb, sizeof(l_sync_gdb)); + size_t l_res = dap_stream_ch_chain_pkt_write_mt(l_worker, l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB, l_net->pub.id, + l_chain_id, l_net->pub.cell_id, &l_sync_gdb, sizeof(l_sync_gdb)); if (l_res == 0) { log_it(L_WARNING, "Can't send GDB sync request"); continue; @@ -502,20 +503,18 @@ static int s_net_states_proc(dap_chain_net_t * l_net) default: log_it(L_INFO, "Node sync error %d",l_res); } - if (dap_client_get_stream_ch(l_node_client->client, dap_stream_ch_chain_get_id())) { - l_res = dap_stream_ch_chain_pkt_write(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB_RVRS, l_net->pub.id, - l_chain_id, l_net->pub.cell_id, &l_sync_gdb, sizeof(l_sync_gdb)); - l_res = dap_chain_node_client_wait(l_node_client, NODE_CLIENT_STATE_SYNCED, timeout_ms); - switch (l_res) { - case -1: - log_it(L_WARNING,"Timeout with link sync"); - break; - case 0: - log_it(L_INFO, "Node sync completed"); - break; - default: - log_it(L_INFO, "Node sync error %d",l_res); - } + l_res = dap_stream_ch_chain_pkt_write_mt(l_worker, l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB_RVRS, l_net->pub.id, + l_chain_id, l_net->pub.cell_id, &l_sync_gdb, sizeof(l_sync_gdb)); + l_res = dap_chain_node_client_wait(l_node_client, NODE_CLIENT_STATE_SYNCED, timeout_ms); + switch (l_res) { + case -1: + log_it(L_WARNING,"Timeout with link sync"); + break; + case 0: + log_it(L_INFO, "Node sync completed"); + break; + default: + log_it(L_INFO, "Node sync error %d",l_res); } l_tmp = dap_list_next(l_tmp); } @@ -541,14 +540,15 @@ static int s_net_states_proc(dap_chain_net_t * l_net) l_pvt_net->links = dap_list_remove(l_pvt_net->links, l_node_client); continue; } + dap_stream_worker_t *l_worker = dap_client_get_stream_worker(l_node_client->client); dap_chain_t * l_chain = NULL; int l_res = 0; DL_FOREACH (l_net->pub.chains, l_chain) { l_node_client->state = NODE_CLIENT_STATE_CONNECTED; dap_stream_ch_chain_sync_request_t l_request ; memset(&l_request, 0, sizeof (l_request)); - dap_stream_ch_chain_pkt_write(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS, l_net->pub.id, - l_chain->id, l_net->pub.cell_id, &l_request, sizeof(l_request)); + dap_stream_ch_chain_pkt_write_mt(l_worker, l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS, l_net->pub.id, + l_chain->id, l_net->pub.cell_id, &l_request, sizeof(l_request)); // wait for finishing of request int timeout_ms = 120000; // 2 min = 120 sec = 120 000 ms // TODO add progress info to console @@ -566,27 +566,25 @@ static int s_net_states_proc(dap_chain_net_t * l_net) log_it(L_ERROR, "Sync of chain '%s' error %d", l_chain->name,l_res); } } - if (dap_client_get_stream_ch(l_node_client->client, dap_stream_ch_chain_get_id())) { - dap_stream_ch_chain_pkt_write(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS_RVRS, l_net->pub.id, - l_chain->id, l_net->pub.cell_id, &l_request, sizeof(l_request)); - l_res = dap_chain_node_client_wait(l_node_client, NODE_CLIENT_STATE_SYNCED, timeout_ms); - switch (l_res) { - case -1: - log_it(L_WARNING,"Timeout with reverse sync of chain '%s' ", l_chain->name); - break; - case 0: - l_need_flush = true; - log_it(L_INFO, "Reverse sync of chain '%s' completed ", l_chain->name); - // set time of last sync - { - struct timespec l_to; - clock_gettime(CLOCK_MONOTONIC, &l_to); - l_pvt_net->last_sync = l_to.tv_sec; - } - break; - default: - log_it(L_ERROR, "Reverse sync of chain '%s' error %d", l_chain->name,l_res); + dap_stream_ch_chain_pkt_write_mt(l_worker, l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS_RVRS, l_net->pub.id, + l_chain->id, l_net->pub.cell_id, &l_request, sizeof(l_request)); + l_res = dap_chain_node_client_wait(l_node_client, NODE_CLIENT_STATE_SYNCED, timeout_ms); + switch (l_res) { + case -1: + log_it(L_WARNING,"Timeout with reverse sync of chain '%s' ", l_chain->name); + break; + case 0: + l_need_flush = true; + log_it(L_INFO, "Reverse sync of chain '%s' completed ", l_chain->name); + // set time of last sync + { + struct timespec l_to; + clock_gettime(CLOCK_MONOTONIC, &l_to); + l_pvt_net->last_sync = l_to.tv_sec; } + break; + default: + log_it(L_ERROR, "Reverse sync of chain '%s' error %d", l_chain->name,l_res); } } l_tmp = dap_list_next(l_tmp); diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index cca14baa7998c6016686facdfc83caf8ec6c30b4..edd503ee2fc05db4695eba355144bcbcd6ef75f4 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -1098,7 +1098,7 @@ int com_node(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply) DAP_DELETE(l_remote_node_info); return -1;*/ } - /* if(0 == dap_stream_ch_chain_pkt_write(l_ch_chain, DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_ADDR_REQUEST, + /* if(0 == dap_stream_ch_chain_pkt_write_unsafe(l_ch_chain, DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_ADDR_REQUEST, l_net->pub.id, l_chain_id_null, l_chain_cell_id_null, &l_sync_request, sizeof(l_sync_request))) { dap_chain_node_cli_set_reply_text(a_str_reply, "Error: Cant send sync chains request"); @@ -1130,7 +1130,7 @@ int com_node(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply) //l_s_ch_chain->request_cell_id.uint64 = l_chain_cell_id_null.uint64; //memcpy(&l_s_ch_chain->request, &l_sync_request, sizeof(l_sync_request)); - if(0 == dap_stream_ch_chain_pkt_write(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB, + if(0 == dap_stream_ch_chain_pkt_write_unsafe(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB, l_net->pub.id, l_chain_id_null, l_chain_cell_id_null, &l_sync_request, sizeof(l_sync_request))) { dap_chain_node_cli_set_reply_text(a_str_reply, "Error: Can't send sync chains request"); @@ -1165,7 +1165,7 @@ int com_node(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply) l_node_client->state = NODE_CLIENT_STATE_CONNECTED; // send request dap_stream_ch_chain_sync_request_t l_sync_request = { { 0 } }; - if(0 == dap_stream_ch_chain_pkt_write(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS, + if(0 == dap_stream_ch_chain_pkt_write_unsafe(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS, l_net->pub.id, l_chain->id, l_remote_node_info->hdr.cell_id, &l_sync_request, sizeof(l_sync_request))) { dap_chain_node_cli_set_reply_text(a_str_reply, "Error: Can't send sync chains request"); diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c index c08252d630ebd4d5c0371802d80e2064e6c2204f..1721ea01210137059b81437b876058a15908f3c7 100644 --- a/modules/net/dap_chain_node_client.c +++ b/modules/net/dap_chain_node_client.c @@ -361,7 +361,7 @@ static void s_ch_chain_callback_notify_packet_in(dap_stream_ch_chain_t* a_ch_cha dap_chain_node_addr_t l_node_addr = { 0 }; dap_chain_net_t *l_net = dap_chain_net_by_id(a_ch_chain->request_net_id); l_node_addr.uint64 = l_net ? dap_db_get_cur_node_addr(l_net->pub.name) : 0; - dap_stream_ch_chain_pkt_write(a_ch_chain->ch, l_type, + dap_stream_ch_chain_pkt_write_unsafe(a_ch_chain->ch, l_type, a_ch_chain->request_net_id, a_ch_chain->request_chain_id, a_ch_chain->request_cell_id, &l_node_addr, sizeof(dap_chain_node_addr_t));