From 91fcd07733ef70fefe5ffbb7b1e3cbf7c87233e2 Mon Sep 17 00:00:00 2001 From: "B. Blechschmidt" Date: Sat, 24 Feb 2024 22:06:37 +0100 Subject: [PATCH] Do not terminate when UDP is not supported by proxy When an HTTP proxy is used, `new_proxy_handler` can result in an error when a UDP packet is processed. Without this commit, this results in the termination of tun2proxy. --- src/lib.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index c54aa7f..283a74c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -160,13 +160,19 @@ where } else { None }; - let proxy_handler = mgr.new_proxy_handler(info, domain_name, true).await?; - tokio::spawn(async move { - if let Err(err) = handle_udp_associate_session(udp, server_addr, proxy_handler, ipv6_enabled).await { - log::error!("{} error \"{}\"", info, err); + match mgr.new_proxy_handler(info, domain_name, true).await { + Ok(proxy_handler) => { + tokio::spawn(async move { + if let Err(err) = handle_udp_associate_session(udp, server_addr, proxy_handler, ipv6_enabled).await { + log::error!("{} error \"{}\"", info, err); + } + log::trace!("Session count {}", TASK_COUNT.fetch_sub(1, Relaxed) - 1); + }); } - log::trace!("Session count {}", TASK_COUNT.fetch_sub(1, Relaxed) - 1); - }); + Err(e) => { + log::error!("Failed to create UDP connection: {}", e); + } + } } _ => { log::trace!("Unknown transport");