From 1835318f8d02cec472cd6784bf34f0faefcd8fc5 Mon Sep 17 00:00:00 2001 From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net> Date: Thu, 12 Dec 2019 01:38:31 +0700 Subject: [PATCH] [+] Emit NOTIFY_STOPPED packet when the service is stopped --- dap_chain_net_srv_vpn.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dap_chain_net_srv_vpn.c b/dap_chain_net_srv_vpn.c index 5502bc9..8668283 100755 --- a/dap_chain_net_srv_vpn.c +++ b/dap_chain_net_srv_vpn.c @@ -611,17 +611,24 @@ static void s_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg) if ( ! l_usage){ log_it(L_NOTICE, "No active usage in list, possible disconnected. Send nothin on this channel"); dap_stream_ch_set_ready_to_write(a_ch,false); + dap_stream_ch_set_ready_to_read(a_ch,false); return; } if ( ! l_usage->is_active ){ log_it(L_INFO, "Usage inactivation: switch off packet output channel"); dap_stream_ch_set_ready_to_write(a_ch,false); + dap_stream_ch_set_ready_to_read(a_ch,false); + if (l_usage->clients) + dap_stream_ch_pkt_write( l_usage->clients->ch , DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_NOTIFY_STOPPED , NULL, 0 ); return; } if ( ! l_usage->receipt ){ log_it(L_WARNING, "No active receipt, switching off"); dap_stream_ch_set_ready_to_write(a_ch,false); + dap_stream_ch_set_ready_to_read(a_ch,false); + if (l_usage->clients) + dap_stream_ch_pkt_write( l_usage->clients->ch , DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_NOTIFY_STOPPED , NULL, 0 ); return; } @@ -719,6 +726,7 @@ static void s_update_limits(dap_stream_ch_t * a_ch , log_it(L_WARNING, "VPN doesnt accept serv unit type 0x%08X for limits_ts", a_usage->receipt->receipt.units_type.uint32 ); dap_stream_ch_set_ready_to_write(a_ch,false); dap_stream_ch_set_ready_to_read(a_ch,false); + dap_stream_ch_pkt_write( a_usage->clients->ch , DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_NOTIFY_STOPPED , NULL, 0 ); } } @@ -727,6 +735,7 @@ static void s_update_limits(dap_stream_ch_t * a_ch , log_it( L_NOTICE, "No activate receipt in usage, switch off write callback for channel"); dap_stream_ch_set_ready_to_write(a_ch,false); dap_stream_ch_set_ready_to_read(a_ch,false); + dap_stream_ch_pkt_write( a_usage->clients->ch , DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_NOTIFY_STOPPED , NULL, 0 ); } } }else if ( a_srv_session->limits_bytes ){ @@ -758,6 +767,7 @@ static void s_update_limits(dap_stream_ch_t * a_ch , log_it(L_WARNING, "VPN doesnt accept serv unit type 0x%08X for limits_bytes", a_usage->receipt->receipt.units_type.uint32 ); dap_stream_ch_set_ready_to_write(a_ch,false); dap_stream_ch_set_ready_to_read(a_ch,false); + dap_stream_ch_pkt_write( a_usage->clients->ch , DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_NOTIFY_STOPPED , NULL, 0 ); } } @@ -766,6 +776,8 @@ static void s_update_limits(dap_stream_ch_t * a_ch , log_it( L_NOTICE, "No activate receipt in usage, switch off write callback for channel"); dap_stream_ch_set_ready_to_write(a_ch,false); dap_stream_ch_set_ready_to_read(a_ch,false); + dap_stream_ch_pkt_write( a_usage->clients->ch , DAP_STREAM_CH_CHAIN_NET_SRV_PKT_TYPE_NOTIFY_STOPPED , NULL, 0 ); + } } -- GitLab