Browse Source

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.
pull/99/head
B. Blechschmidt 2 years ago
parent
commit
91fcd07733
  1. 18
      src/lib.rs

18
src/lib.rs

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

Loading…
Cancel
Save