From 0c60105198863a88112a0e5e0c40e79c08de0cb2 Mon Sep 17 00:00:00 2001 From: "roman.khlopkov" <roman.khlopkov@demlabs.net> Date: Wed, 14 Feb 2024 12:04:28 +0300 Subject: [PATCH] [*] Write callback prototype change --- modules/chain/dap_chain_ch.c | 17 ++++++------ .../dap_stream_ch_chain_net_srv.c | 5 ++-- .../chain-net/dap_stream_ch_chain_net.c | 14 +--------- modules/service/vpn/dap_chain_net_srv_vpn.c | 26 +++++++++---------- .../vpn/dap_chain_net_vpn_client_tun.c | 3 ++- 5 files changed, 27 insertions(+), 38 deletions(-) diff --git a/modules/chain/dap_chain_ch.c b/modules/chain/dap_chain_ch.c index 5baf69dbad..52747f63e0 100644 --- a/modules/chain/dap_chain_ch.c +++ b/modules/chain/dap_chain_ch.c @@ -101,8 +101,8 @@ static inline bool s_ch_chain_get_idle(dap_chain_ch_t *a_ch_chain) { return a_ch static void s_stream_ch_new(dap_stream_ch_t* a_ch, void* a_arg); static void s_stream_ch_delete(dap_stream_ch_t* a_ch, void* a_arg); static void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg); -static void s_stream_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg); -static void s_stream_ch_io_complete(dap_events_socket_t *a_es, void *a_arg, int a_errno); +static bool s_stream_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg); +static void s_stream_ch_io_complete(dap_events_socket_t *a_es, void *a_arg); static void s_stream_ch_write_error_unsafe(dap_stream_ch_t *a_ch, uint64_t a_net_id, uint64_t a_chain_id, uint64_t a_cell_id, const char * a_err_string); static bool s_sync_out_chains_proc_callback(void *a_arg); @@ -1216,10 +1216,8 @@ struct chain_io_complete { byte_t data[]; }; -static void s_stream_ch_io_complete(dap_events_socket_t *a_es, void *a_arg, int a_errno) +static void s_stream_ch_io_complete(dap_events_socket_t *a_es, void *a_arg) { - if (a_errno) - return; dap_stream_t *l_stream = NULL; if (!a_es->server) { dap_client_t *l_client = DAP_ESOCKET_CLIENT(a_es); @@ -1281,13 +1279,13 @@ static void s_stream_ch_chain_pkt_write(dap_stream_ch_t *a_ch, uint8_t a_type, u * @param ch * @param arg */ -void s_stream_ch_packet_out(dap_stream_ch_t *a_ch, void *a_arg) +static bool s_stream_ch_packet_out(dap_stream_ch_t *a_ch, void *a_arg) { dap_chain_ch_t *l_ch_chain = DAP_STREAM_CH_CHAIN(a_ch); if (!l_ch_chain) { log_it(L_CRITICAL, "Channel without chain, dump it"); s_ch_chain_go_idle(l_ch_chain); - return; + return false; } bool l_go_idle = false, l_was_sent_smth = false; switch (l_ch_chain->state) { @@ -1549,7 +1547,7 @@ void s_stream_ch_packet_out(dap_stream_ch_t *a_ch, void *a_arg) l_hash_item = DAP_NEW_Z(dap_chain_ch_hash_item_t); if (!l_hash_item) { log_it(L_CRITICAL, "Memory allocation error"); - return; + return false; } l_hash_item->hash = *l_ch_chain->request_atom_iter->cur_hash; if(s_debug_more){ @@ -1587,6 +1585,7 @@ void s_stream_ch_packet_out(dap_stream_ch_t *a_ch, void *a_arg) 0, l_ch_chain->callback_notify_arg); } } break; + default: break; } if (l_was_sent_smth) { @@ -1601,5 +1600,7 @@ void s_stream_ch_packet_out(dap_stream_ch_t *a_ch, void *a_arg) dap_timerfd_delete_unsafe(l_ch_chain->activity_timer); l_ch_chain->activity_timer = NULL; } + return false; } + return true; } 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 c14c1be39b..d890a0c250 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 @@ -53,7 +53,7 @@ typedef struct usages_in_grace{ static void s_stream_ch_new(dap_stream_ch_t* ch , void* arg); static void s_stream_ch_delete(dap_stream_ch_t* ch , void* arg); static void s_stream_ch_packet_in(dap_stream_ch_t* ch , void* arg); -static void s_stream_ch_packet_out(dap_stream_ch_t* ch , void* arg); +static bool s_stream_ch_packet_out(dap_stream_ch_t* ch , void* arg); static bool s_unban_client(dap_chain_net_srv_banlist_item_t *a_item); @@ -1592,11 +1592,12 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch , void* a_arg) * @param a_ch * @param a_arg */ -void s_stream_ch_packet_out(dap_stream_ch_t* a_ch , void* a_arg) +static bool s_stream_ch_packet_out(dap_stream_ch_t* a_ch , void* a_arg) { (void) a_arg; dap_stream_ch_set_ready_to_write_unsafe(a_ch, false); // Callback should note that after write action it should restore write flag if it has more data to send on next iteration dap_chain_net_srv_call_write_all( a_ch); + return false; } 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 066697d82f..f610520e9f 100644 --- a/modules/channel/chain-net/dap_stream_ch_chain_net.c +++ b/modules/channel/chain-net/dap_stream_ch_chain_net.c @@ -60,7 +60,6 @@ static void s_stream_ch_new(dap_stream_ch_t* ch, void* arg); static void s_stream_ch_delete(dap_stream_ch_t* ch, void* arg); static void s_stream_ch_packet_in(dap_stream_ch_t* ch, void* arg); -static void s_stream_ch_packet_out(dap_stream_ch_t* ch, void* arg); /** * @brief dap_stream_ch_chain_net_init @@ -70,7 +69,7 @@ int dap_stream_ch_chain_net_init() { log_it(L_NOTICE, "Chain network channel initialized"); 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); + s_stream_ch_packet_in, NULL); return 0; } @@ -289,14 +288,3 @@ void s_stream_ch_packet_in(dap_stream_ch_t *a_ch, void* a_arg) } } - - - -/** - * @brief s_stream_ch_packet_out - * @param ch - * @param arg - */ -void s_stream_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) -{ -} diff --git a/modules/service/vpn/dap_chain_net_srv_vpn.c b/modules/service/vpn/dap_chain_net_srv_vpn.c index 3cd1c8e594..a500e77323 100644 --- a/modules/service/vpn/dap_chain_net_srv_vpn.c +++ b/modules/service/vpn/dap_chain_net_srv_vpn.c @@ -201,7 +201,7 @@ static bool s_save_limits(void* arg); static void s_ch_vpn_new(dap_stream_ch_t* ch, void* arg); static void s_ch_vpn_delete(dap_stream_ch_t* ch, void* arg); static void s_ch_packet_in(dap_stream_ch_t* ch, void* a_arg); -static void s_ch_packet_out(dap_stream_ch_t* ch, void* arg); +static bool s_ch_packet_out(dap_stream_ch_t* ch, void* arg); static void s_ch_vpn_esocket_assigned(dap_events_socket_t* a_es, dap_worker_t * l_worker); static void s_ch_vpn_esocket_unassigned(dap_events_socket_t* a_es, dap_worker_t * l_worker); @@ -220,8 +220,8 @@ static void s_es_tun_new(dap_events_socket_t * a_es, void * arg); static void s_es_tun_delete(dap_events_socket_t * a_es, void * arg); static void s_es_tun_read(dap_events_socket_t * a_es, void * arg); static void s_es_tun_error(dap_events_socket_t * a_es,int arg); -static void s_es_tun_write(dap_events_socket_t* a_es, void* arg); -static void s_es_tun_write_finished(dap_events_socket_t* a_es, void* a_arg, int a_errno); +static bool s_es_tun_write(dap_events_socket_t* a_es, void* arg); +static void s_es_tun_write_finished(dap_events_socket_t *a_es, void* a_arg); static void s_tun_recv_msg_callback(dap_events_socket_t * a_esocket_queue, void * a_msg ); static void s_tun_send_msg_ip_assigned(uint32_t a_worker_own_id, uint32_t a_worker_id, dap_chain_net_srv_ch_vpn_t * a_ch_vpn, struct in_addr a_addr); @@ -1808,7 +1808,7 @@ void s_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) * @param ch * @param arg */ -static void s_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) +static bool s_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) { (void) a_arg; dap_chain_net_srv_stream_session_t * l_srv_session = DAP_CHAIN_NET_SRV_STREAM_SESSION( a_ch->stream->session ); @@ -1819,7 +1819,7 @@ static void s_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) log_it(L_NOTICE, "No active usage in list, possible disconnected. Send nothing on this channel"); dap_stream_ch_set_ready_to_write_unsafe(a_ch,false); dap_stream_ch_set_ready_to_read_unsafe(a_ch,false); - return; + return false; } if ( ! l_usage->is_active ){ @@ -1828,7 +1828,7 @@ static void s_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) dap_stream_ch_pkt_write_unsafe( l_usage->client->ch , DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_NOTIFY_STOPPED , NULL, 0 ); dap_stream_ch_set_ready_to_write_unsafe(a_ch,false); dap_stream_ch_set_ready_to_read_unsafe(a_ch,false); - return; + return false; } if ( (! l_usage->is_free) && (! l_usage->receipt && !l_usage->is_grace) ){ log_it(L_WARNING, "No active receipt, switching off"); @@ -1836,12 +1836,9 @@ static void s_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) dap_stream_ch_pkt_write_unsafe( l_usage->client->ch , DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_NOTIFY_STOPPED , NULL, 0 ); dap_stream_ch_set_ready_to_write_unsafe(a_ch,false); dap_stream_ch_set_ready_to_read_unsafe(a_ch,false); - return; + return false; } - // Check for empty buffer out here to prevent warnings in worker - if ( ! a_ch->stream->esocket->buf_out_size ) - dap_events_socket_set_writable_unsafe(a_ch->stream->esocket,false); - + return false; } /** @@ -1864,7 +1861,7 @@ static void s_es_tun_delete(dap_events_socket_t * a_es, void * arg) * @param a_es * @param arg */ -static void s_es_tun_write(dap_events_socket_t *a_es, void *arg) +static bool s_es_tun_write(dap_events_socket_t *a_es, void *arg) { (void) arg; dap_chain_net_srv_vpn_tun_socket_t *l_tun = CH_SF_TUN_SOCKET(a_es); @@ -1913,11 +1910,12 @@ static void s_es_tun_write(dap_events_socket_t *a_es, void *arg) } l_tun->buf_size_aux = l_tun->es->buf_out_size; /* We backup the genuine buffer size... */ l_tun->es->buf_out_size = 0; /* ... and insure the socket against coursing thru regular writing operations */ + return false; } -static void s_es_tun_write_finished(dap_events_socket_t *a_es, void *a_arg, int a_errno) { +static void s_es_tun_write_finished(dap_events_socket_t *a_es, void *a_arg) +{ UNUSED(a_arg); - UNUSED(a_errno); dap_chain_net_srv_vpn_tun_socket_t *l_tun = CH_SF_TUN_SOCKET(a_es); assert(l_tun); assert(l_tun->es == a_es); diff --git a/modules/service/vpn/dap_chain_net_vpn_client_tun.c b/modules/service/vpn/dap_chain_net_vpn_client_tun.c index ffd219b19f..43f92ee72a 100644 --- a/modules/service/vpn/dap_chain_net_vpn_client_tun.c +++ b/modules/service/vpn/dap_chain_net_vpn_client_tun.c @@ -342,8 +342,9 @@ static void m_client_tun_delete(dap_events_socket_t * a_es, void * arg) log_it(L_NOTICE, "Raw sockets listen thread is stopped"); } -static void m_client_tun_write(dap_events_socket_t * a_es, void * arg) +static bool m_client_tun_write(dap_events_socket_t * a_es, void * arg) { + return false; } void m_client_tun_new(dap_events_socket_t * a_es, void * arg) -- GitLab