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 {
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");