From d3e521f70e8330be1fbed325a543da2a84a0e81a Mon Sep 17 00:00:00 2001 From: Rob Walker Date: Thu, 15 Nov 2018 15:49:37 -0800 Subject: [PATCH] accept other socket errors, ignore unless out of tries (#1835) --- src/netutil.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/netutil.rs b/src/netutil.rs index 6fef1a9398..8ab8ef0f56 100644 --- a/src/netutil.rs +++ b/src/netutil.rs @@ -126,7 +126,7 @@ pub fn bind_in_range(range: (u16, u16)) -> io::Result<(u16, UdpSocket)> { break Result::Ok((sock.local_addr().unwrap().port(), sock)); } Err(err) => { - if err.kind() != io::ErrorKind::AddrInUse || tries_left == 0 { + if tries_left == 0 { return Err(err); } } @@ -170,6 +170,8 @@ pub fn find_available_port_in_range(range: (u16, u16)) -> io::Result { let mut tries_left = end - start; let mut rand_port = thread_rng().gen_range(start, end); loop { + eprintln!("trying port {}", rand_port); + match TcpListener::bind(SocketAddr::new( IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), rand_port, @@ -178,7 +180,7 @@ pub fn find_available_port_in_range(range: (u16, u16)) -> io::Result { break Ok(rand_port); } Err(err) => { - if err.kind() != io::ErrorKind::AddrInUse || tries_left == 0 { + if tries_left == 0 { return Err(err); } }