Fix client IPv6 UDP: use SocketAddr::new() and bind to [::]
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:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user