mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-04-20 13:59:10 +00:00
read code
This commit is contained in:
parent
be45bc8a22
commit
da5f7277aa
1 changed files with 12 additions and 25 deletions
33
src/lib.rs
33
src/lib.rs
|
@ -346,17 +346,15 @@ where
|
||||||
#[cfg(feature = "udpgw")]
|
#[cfg(feature = "udpgw")]
|
||||||
if let Some(udpgw) = udpgw_client.clone() {
|
if let Some(udpgw) = udpgw_client.clone() {
|
||||||
let tcp_src = match udp.peer_addr() {
|
let tcp_src = match udp.peer_addr() {
|
||||||
SocketAddr::V4(_) => SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(0, 0, 0, 0), 0)),
|
SocketAddr::V4(_) => SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, 0)),
|
||||||
SocketAddr::V6(_) => SocketAddr::V6(SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0), 0, 0, 0)),
|
SocketAddr::V6(_) => SocketAddr::V6(SocketAddrV6::new(Ipv6Addr::UNSPECIFIED, 0, 0, 0)),
|
||||||
};
|
};
|
||||||
let tcpinfo = SessionInfo::new(tcp_src, udpgw.get_server_addr(), IpProtocol::Tcp);
|
let tcpinfo = SessionInfo::new(tcp_src, udpgw.get_server_addr(), IpProtocol::Tcp);
|
||||||
let proxy_handler = mgr.new_proxy_handler(tcpinfo, None, false).await?;
|
let proxy_handler = mgr.new_proxy_handler(tcpinfo, None, false).await?;
|
||||||
let socket_queue = socket_queue.clone();
|
let queue = socket_queue.clone();
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
if let Err(err) =
|
if let Err(e) = handle_udp_gateway_session(udp, udpgw, domain_name, proxy_handler, queue, ipv6_enabled).await {
|
||||||
handle_udp_gateway_session(udp, udpgw, domain_name, proxy_handler, socket_queue, ipv6_enabled).await
|
log::info!("Ending {} with \"{}\"", info, e);
|
||||||
{
|
|
||||||
log::info!("Ending {} with \"{}\"", info, err);
|
|
||||||
}
|
}
|
||||||
log::trace!("Session count {}", TASK_COUNT.fetch_sub(1, Relaxed) - 1);
|
log::trace!("Session count {}", TASK_COUNT.fetch_sub(1, Relaxed) - 1);
|
||||||
});
|
});
|
||||||
|
@ -496,12 +494,8 @@ async fn handle_udp_gateway_session(
|
||||||
let udpinfo = SessionInfo::new(udp_stack.local_addr(), udp_stack.peer_addr(), IpProtocol::Udp);
|
let udpinfo = SessionInfo::new(udp_stack.local_addr(), udp_stack.peer_addr(), IpProtocol::Udp);
|
||||||
let udp_mtu = udpgw_client.get_udp_mtu();
|
let udp_mtu = udpgw_client.get_udp_mtu();
|
||||||
let udp_timeout = udpgw_client.get_udp_timeout();
|
let udp_timeout = udpgw_client.get_udp_timeout();
|
||||||
let mut server_stream: UdpGwClientStream;
|
let mut server_stream = match udpgw_client.get_server_connection().await {
|
||||||
let server = udpgw_client.get_server_connection().await;
|
Some(server) => server,
|
||||||
match server {
|
|
||||||
Some(server) => {
|
|
||||||
server_stream = server;
|
|
||||||
}
|
|
||||||
None => {
|
None => {
|
||||||
if udpgw_client.is_full().await {
|
if udpgw_client.is_full().await {
|
||||||
return Err("max udpgw connection limit reached".into());
|
return Err("max udpgw connection limit reached".into());
|
||||||
|
@ -510,7 +504,7 @@ async fn handle_udp_gateway_session(
|
||||||
if let Err(e) = handle_proxy_session(&mut tcp_server_stream, proxy_handler).await {
|
if let Err(e) = handle_proxy_session(&mut tcp_server_stream, proxy_handler).await {
|
||||||
return Err(format!("udpgw connection error: {}", e).into());
|
return Err(format!("udpgw connection error: {}", e).into());
|
||||||
}
|
}
|
||||||
server_stream = UdpGwClientStream::new(udp_mtu, tcp_server_stream);
|
UdpGwClientStream::new(udp_mtu, tcp_server_stream)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -554,15 +548,8 @@ async fn handle_udp_gateway_session(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let newid = server_stream.newid();
|
let newid = server_stream.newid();
|
||||||
if let Err(e) =
|
if let Err(e) = UdpGwClient::send_udpgw_packet(ipv6_enabled, read_len, udp_server_addr, domain_name.as_ref(), newid, &mut stream_writer).await {
|
||||||
UdpGwClient::send_udpgw_packet(ipv6_enabled, read_len, udp_server_addr, domain_name.as_ref(),newid,&mut stream_writer).await
|
log::info!("Ending {} <- {} with send_udpgw_packet {}", udpinfo, &tcp_local_addr, e);
|
||||||
{
|
|
||||||
log::info!(
|
|
||||||
"Ending {} <- {} with send_udpgw_packet {}",
|
|
||||||
udpinfo,
|
|
||||||
&tcp_local_addr,
|
|
||||||
e
|
|
||||||
);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
log::debug!("{} <- {} send udpgw len {}", udpinfo, &tcp_local_addr, read_len);
|
log::debug!("{} <- {} send udpgw len {}", udpinfo, &tcp_local_addr, read_len);
|
||||||
|
|
Loading…
Add table
Reference in a new issue