refine code

This commit is contained in:
ssrlive 2024-10-27 15:27:50 +08:00
parent 2ade72e79d
commit b9cf06da33

View file

@ -354,7 +354,11 @@ where
let queue = socket_queue.clone();
tokio::spawn(async move {
let dst = info.dst; // real UDP destination address
if let Err(e) = handle_udp_gateway_session(udp, udpgw, dst, domain_name, proxy_handler, queue, ipv6_enabled).await {
let dst_addr = match domain_name {
Some(ref d) => socks5_impl::protocol::Address::from((d.clone(), dst.port())),
None => dst.into(),
};
if let Err(e) = handle_udp_gateway_session(udp, udpgw, &dst_addr, proxy_handler, queue, ipv6_enabled).await {
log::info!("Ending {} with \"{}\"", info, e);
}
log::trace!("Session count {}", TASK_COUNT.fetch_sub(1, Relaxed) - 1);
@ -483,8 +487,7 @@ async fn handle_tcp_session(
async fn handle_udp_gateway_session(
mut udp_stack: IpStackUdpStream,
udpgw_client: Arc<UdpGwClient>,
udp_dst: SocketAddr,
domain_name: Option<String>,
udp_dst: &socks5_impl::protocol::Address,
proxy_handler: Arc<Mutex<dyn ProxyHandler>>,
socket_queue: Option<Arc<SocketQueue>>,
ipv6_enabled: bool,
@ -508,10 +511,7 @@ async fn handle_udp_gateway_session(
let tcp_local_addr = stream.local_addr().clone();
match domain_name {
Some(ref d) => log::info!("[UdpGw] Beginning {} -> {}, domain:{}", &tcp_local_addr, udp_dst, d),
None => log::info!("[UdpGw] Beginning {} -> {}", &tcp_local_addr, udp_dst),
}
log::info!("[UdpGw] Beginning {} -> {}", &tcp_local_addr, udp_dst);
let Some(mut reader) = stream.get_reader() else {
return Err("get reader failed".into());
@ -539,11 +539,7 @@ async fn handle_udp_gateway_session(
};
crate::traffic_status::traffic_status_update(read_len, 0)?;
let new_id = stream.new_id();
let remote_addr = match domain_name {
Some(ref d) => socks5_impl::protocol::Address::from((d.clone(), udp_dst.port())),
None => udp_dst.into(),
};
if let Err(e) = UdpGwClient::send_udpgw_packet(ipv6_enabled, &tmp_buf[0..read_len], &remote_addr, new_id, &mut writer).await {
if let Err(e) = UdpGwClient::send_udpgw_packet(ipv6_enabled, &tmp_buf[0..read_len], udp_dst, new_id, &mut writer).await {
log::info!("[UdpGw] Ending {} <> {} with send_udpgw_packet {}", &tcp_local_addr, udp_dst, e);
break;
}