ipv6 set v6 only when bind

This commit is contained in:
sijie.sun
2024-04-28 09:23:30 +08:00
committed by Sijie.Sun
parent d8033a77b9
commit b3717d974b
6 changed files with 57 additions and 24 deletions

View File

@@ -118,7 +118,14 @@ pub trait TunnelConnector: Send {
}
pub fn build_url_from_socket_addr(addr: &String, scheme: &str) -> url::Url {
url::Url::parse(format!("{}://{}", scheme, addr).as_str()).unwrap()
if let Ok(sock_addr) = addr.parse::<SocketAddr>() {
let mut ret_url = url::Url::parse(format!("{}://0.0.0.0", scheme).as_str()).unwrap();
ret_url.set_ip_host(sock_addr.ip()).unwrap();
ret_url.set_port(Some(sock_addr.port())).unwrap();
ret_url
} else {
url::Url::parse(format!("{}://{}", scheme, addr).as_str()).unwrap()
}
}
impl std::fmt::Debug for dyn Tunnel {