Fix client IPv6 UDP: use SocketAddr::new() and bind to [::]
All checks were successful
CI / test (push) Successful in 1m26s
Build & Release / release (push) Successful in 3m10s

Same fix as server side — format!("{}:{}", ipv6, port) fails.
Use SocketAddr::new() for IPv6 and bind to [::] instead of 0.0.0.0.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Siavash Sameni
2026-03-31 18:54:45 +04:00
parent 7be6a0d541
commit a1dbc6dc5a

View File

@@ -213,9 +213,19 @@ async fn run_udp_test_client(
server_udp_port, client_udp_port, server_udp_port, client_udp_port,
); );
let udp = UdpSocket::bind(format!("0.0.0.0:{}", client_udp_port)).await?; // Detect IPv6 from the host address
let server_udp_addr: SocketAddr = let is_ipv6 = host.contains(':');
format!("{}:{}", host, server_udp_port).parse().unwrap(); let bind_addr: SocketAddr = if is_ipv6 {
format!("[::]:{}", client_udp_port).parse().unwrap()
} else {
format!("0.0.0.0:{}", client_udp_port).parse().unwrap()
};
let udp = UdpSocket::bind(bind_addr).await?;
let server_udp_addr = if is_ipv6 {
SocketAddr::new(host.parse().unwrap(), server_udp_port)
} else {
format!("{}:{}", host, server_udp_port).parse().unwrap()
};
udp.connect(server_udp_addr).await?; udp.connect(server_udp_addr).await?;
if nat_mode { if nat_mode {