diff --git a/ostp-client/src/bridge.rs b/ostp-client/src/bridge.rs index 98b2383..0ba9b1e 100644 --- a/ostp-client/src/bridge.rs +++ b/ostp-client/src/bridge.rs @@ -315,7 +315,7 @@ impl Bridge { self.metrics.connection_state.store(1, Ordering::Relaxed); let session_count = if self.mux_enabled { self.mux_sessions.max(1) } else { 1 }; - let (udp_tx, udp_rx) = mpsc::channel(100000); + let (udp_tx, udp_rx) = mpsc::channel(1024); let mut sessions = Vec::with_capacity(session_count); let mut rtt_sum = 0.0; let mut successful_sessions = 0; @@ -412,7 +412,7 @@ impl Bridge { self.last_valid_recv = Instant::now() - Duration::from_secs(100); let session_count = if self.mux_enabled { self.mux_sessions.max(1) } else { 1 }; - let (udp_tx, udp_rx) = mpsc::channel(100000); + let (udp_tx, udp_rx) = mpsc::channel(1024); let mut new_sessions = Vec::with_capacity(session_count); let mut successful_sessions = 0; let mut rtt_sum = 0.0; @@ -548,7 +548,7 @@ impl Bridge { self.metrics.connection_state.store(1, Ordering::Relaxed); let session_count = if self.mux_enabled { self.mux_sessions.max(1) } else { 1 }; - let (udp_tx, udp_rx) = mpsc::channel(100000); + let (udp_tx, udp_rx) = mpsc::channel(1024); let mut new_sessions = Vec::with_capacity(session_count); let mut successful_sessions = 0; let mut rtt_sum = 0.0; diff --git a/ostp-client/src/tunnel/native_handler.rs b/ostp-client/src/tunnel/native_handler.rs index b1fe5b1..9cfcf20 100644 --- a/ostp-client/src/tunnel/native_handler.rs +++ b/ostp-client/src/tunnel/native_handler.rs @@ -104,9 +104,9 @@ pub async fn run_native_tunnel( // ── 7. Build smoltcp network stack ──────────────────────────────────────── let (stack, tcp_runner, udp_socket, tcp_listener) = StackBuilder::default() - .stack_buffer_size(100_000) - .tcp_buffer_size(100_000) - .udp_buffer_size(100_000) + .stack_buffer_size(1024) + .tcp_buffer_size(1024) + .udp_buffer_size(1024) .enable_tcp(true) .enable_udp(true) .mtu(config.ostp.mtu) @@ -454,9 +454,9 @@ pub async fn run_native_tunnel_from_fd( let tun_stream = tokio::io::unix::AsyncFd::new(file)?; let (stack, tcp_runner, udp_socket, tcp_listener) = StackBuilder::default() - .stack_buffer_size(100_000) - .tcp_buffer_size(100_000) - .udp_buffer_size(100_000) + .stack_buffer_size(1024) + .tcp_buffer_size(1024) + .udp_buffer_size(1024) .enable_tcp(true) .enable_udp(true) .mtu(config.ostp.mtu) diff --git a/ostp-client/src/tunnel/udp_nat.rs b/ostp-client/src/tunnel/udp_nat.rs index ad99dcb..5f94301 100644 --- a/ostp-client/src/tunnel/udp_nat.rs +++ b/ostp-client/src/tunnel/udp_nat.rs @@ -30,7 +30,7 @@ pub async fn run_udp_nat( if payload.is_empty() { continue; } if !sessions.contains_key(&src) { - let (session_tx, mut session_rx) = mpsc::channel::<(Vec, SocketAddr)>(100000); + let (session_tx, mut session_rx) = mpsc::channel::<(Vec, SocketAddr)>(1024); sessions.insert(src, session_tx); let proxy_addr_clone = proxy_addr.clone(); @@ -89,8 +89,14 @@ pub async fn run_udp_nat( } if let Some(sender) = sessions.get(&src) { - if sender.send((payload, dst)).await.is_err() { - sessions.remove(&src); + match sender.try_send((payload, dst)) { + Err(mpsc::error::TrySendError::Closed(_)) => { + sessions.remove(&src); + } + Err(mpsc::error::TrySendError::Full(_)) => { + // Drop packet to avoid blocking the TUN interface loop + } + Ok(_) => {} } } }