diff --git a/src/sys/unix/tcp_listener.rs b/src/sys/unix/tcp_listener.rs index 1395df56a..9fdf3751c 100644 --- a/src/sys/unix/tcp_listener.rs +++ b/src/sys/unix/tcp_listener.rs @@ -49,9 +49,11 @@ impl TcpListener { } pub fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> { - self.inner - .accept() - .map(|(inner, addr)| (TcpStream::new(inner), addr)) + self.inner.accept().and_then(|(inner, addr)| { + inner + .set_nonblocking(true) + .map(|()| (TcpStream::new(inner), addr)) + }) } pub fn set_ttl(&self, ttl: u32) -> io::Result<()> { diff --git a/src/sys/windows/tcp.rs b/src/sys/windows/tcp.rs index d34b82178..113ce0141 100644 --- a/src/sys/windows/tcp.rs +++ b/src/sys/windows/tcp.rs @@ -359,14 +359,16 @@ impl TcpListener { } pub fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> { - wouldblock!(self, accept).map(|(inner, addr)| { - ( - TcpStream { - internal: Arc::new(Mutex::new(None)), - inner, - }, - addr, - ) + wouldblock!(self, accept).and_then(|(inner, addr)| { + inner.set_nonblocking(true).map(|()| { + ( + TcpStream { + internal: Arc::new(Mutex::new(None)), + inner, + }, + addr, + ) + }) }) }