diff --git a/dap_chain_net_srv_vpn.c b/dap_chain_net_srv_vpn.c index 90a0907091f00f550c8c915a0d33253de5efef40..43872b64246454d4b415714f81fd999a00ba8d0d 100755 --- a/dap_chain_net_srv_vpn.c +++ b/dap_chain_net_srv_vpn.c @@ -621,17 +621,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; } @@ -715,20 +722,21 @@ static void s_update_limits(dap_stream_ch_t * a_ch , a_usage->receipt_next = NULL; l_issue_new_receipt = true; if ( a_usage->receipt){ // If there is next receipt add the time and request the next receipt - a_srv_session->limits_units_type.uint32 = a_usage->receipt->receipt.units_type.uint32; - switch( a_usage->receipt->receipt.units_type.enm){ + a_srv_session->limits_units_type.uint32 = a_usage->receipt->receipt_info.units_type.uint32; + switch( a_usage->receipt->receipt_info.units_type.enm){ case SERV_UNIT_DAY:{ - a_srv_session->limits_ts = time(NULL) + (time_t) a_usage->receipt->receipt.units*24*3600; - log_it(L_INFO,"%llu days more for VPN usage", a_usage->receipt->receipt.units); + a_srv_session->limits_ts = time(NULL) + (time_t) a_usage->receipt->receipt_info.units*24*3600; + log_it(L_INFO,"%llu days more for VPN usage", a_usage->receipt->receipt_info.units); } break; case SERV_UNIT_SEC:{ - a_srv_session->limits_ts = time(NULL) + (time_t) a_usage->receipt->receipt.units; - log_it(L_INFO,"%llu seconds more for VPN usage", a_usage->receipt->receipt.units); + a_srv_session->limits_ts = time(NULL) + (time_t) a_usage->receipt->receipt_info.units; + log_it(L_INFO,"%llu seconds more for VPN usage", a_usage->receipt->receipt_info.units); } break; default: { - log_it(L_WARNING, "VPN doesnt accept serv unit type 0x%08X for limits_ts", a_usage->receipt->receipt.units_type.uint32 ); + log_it(L_WARNING, "VPN doesnt accept serv unit type 0x%08X for limits_ts", a_usage->receipt->receipt_info.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 ); } } @@ -737,6 +745,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 ){ @@ -750,24 +759,25 @@ static void s_update_limits(dap_stream_ch_t * a_ch , a_usage->receipt_next = NULL; l_issue_new_receipt = true; if ( a_usage->receipt){ // If there is next receipt add the time and request the next receipt - a_srv_session->limits_units_type.uint32 = a_usage->receipt->receipt.units_type.uint32; - switch( a_usage->receipt->receipt.units_type.enm){ + a_srv_session->limits_units_type.uint32 = a_usage->receipt->receipt_info.units_type.uint32; + switch( a_usage->receipt->receipt_info.units_type.enm){ case SERV_UNIT_B:{ - a_srv_session->limits_bytes += (uint128_t) a_usage->receipt->receipt.units; - log_it(L_INFO,"%llu bytes more for VPN usage", a_usage->receipt->receipt.units); + a_srv_session->limits_bytes += (uint128_t) a_usage->receipt->receipt_info.units; + log_it(L_INFO,"%llu bytes more for VPN usage", a_usage->receipt->receipt_info.units); } break; case SERV_UNIT_KB:{ - a_srv_session->limits_bytes += 1000ull * ( (uint128_t) a_usage->receipt->receipt.units); - log_it(L_INFO,"%llu bytes more for VPN usage", a_usage->receipt->receipt.units); + a_srv_session->limits_bytes += 1000ull * ( (uint128_t) a_usage->receipt->receipt_info.units); + log_it(L_INFO,"%llu bytes more for VPN usage", a_usage->receipt->receipt_info.units); } break; case SERV_UNIT_MB:{ - a_srv_session->limits_bytes += 1000000ull * ( (uint128_t) a_usage->receipt->receipt.units); - log_it(L_INFO,"%llu bytes more for VPN usage", a_usage->receipt->receipt.units); + a_srv_session->limits_bytes += 1000000ull * ( (uint128_t) a_usage->receipt->receipt_info.units); + log_it(L_INFO,"%llu bytes more for VPN usage", a_usage->receipt->receipt_info.units); } break; default: { - log_it(L_WARNING, "VPN doesnt accept serv unit type 0x%08X for limits_bytes", a_usage->receipt->receipt.units_type.uint32 ); + log_it(L_WARNING, "VPN doesnt accept serv unit type 0x%08X for limits_bytes", a_usage->receipt->receipt_info.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 ); } } @@ -776,6 +786,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 ); + } }