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.
This commit is contained in:
B. Blechschmidt 2024-02-24 22:06:37 +01:00
parent bd27833c29
commit 91fcd07733

View file

@ -160,13 +160,19 @@ where
} else { } else {
None None
}; };
let proxy_handler = mgr.new_proxy_handler(info, domain_name, true).await?; match mgr.new_proxy_handler(info, domain_name, true).await {
tokio::spawn(async move { Ok(proxy_handler) => {
if let Err(err) = handle_udp_associate_session(udp, server_addr, proxy_handler, ipv6_enabled).await { tokio::spawn(async move {
log::error!("{} error \"{}\"", info, err); 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"); log::trace!("Unknown transport");