From b2505dcfd7268e057e8c2bf313976c4a440f4a4b Mon Sep 17 00:00:00 2001 From: ssrlive <30760636+ssrlive@users.noreply.github.com> Date: Tue, 22 Aug 2023 17:20:35 +0800 Subject: [PATCH] udp_acco_expiry --- src/tun2proxy.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/tun2proxy.rs b/src/tun2proxy.rs index 27e8635..d71944d 100644 --- a/src/tun2proxy.rs +++ b/src/tun2proxy.rs @@ -178,7 +178,7 @@ struct TcpConnectState { close_state: u8, wait_read: bool, wait_write: bool, - expiry: Option<::std::time::Instant>, + udp_acco_expiry: Option<::std::time::Instant>, udp_socket: Option, udp_token: Option, udp_origin_dst: Option, @@ -504,8 +504,8 @@ impl<'a> TunToProxy<'a> { let err = "udp associate state not find"; let state = self.connection_map.get_mut(info).ok_or(err)?; - assert!(state.expiry.is_some()); - state.expiry = Some(Self::udp_associate_timeout()); + assert!(state.udp_acco_expiry.is_some()); + state.udp_acco_expiry = Some(Self::udp_associate_timeout()); // Add SOCKS5 UDP header to the incoming data let mut s5_udp_data = Vec::::new(); @@ -633,7 +633,7 @@ impl<'a> TunToProxy<'a> { close_state: 0, wait_read: true, wait_write: false, - expiry, + udp_acco_expiry: expiry, udp_socket, udp_token, udp_origin_dst: None, @@ -648,7 +648,7 @@ impl<'a> TunToProxy<'a> { fn udp_associate_timeout_expired(&self, info: &ConnectionInfo) -> bool { if let Some(state) = self.connection_map.get(info) { - if let Some(expiry) = state.expiry { + if let Some(expiry) = state.udp_acco_expiry { return expiry < ::std::time::Instant::now(); } } @@ -776,7 +776,8 @@ impl<'a> TunToProxy<'a> { fn receive_udp_packet_and_write_to_client(&mut self, info: &ConnectionInfo) -> Result<()> { let err = "udp connection state not found"; let state = self.connection_map.get_mut(info).ok_or(err)?; - state.expiry = Some(Self::udp_associate_timeout()); + assert!(state.udp_acco_expiry.is_some()); + state.udp_acco_expiry = Some(Self::udp_associate_timeout()); let mut to_send: LinkedList> = LinkedList::new(); if let Some(udp_socket) = state.udp_socket.as_ref() { let mut buf = [0; 1 << 16];