diff --git a/src/net/tcp.rs b/src/net/tcp.rs index a0d441244..06f8efd6c 100644 --- a/src/net/tcp.rs +++ b/src/net/tcp.rs @@ -511,7 +511,7 @@ impl<'a> AsyncRead for &'a TcpStream { fn read_buf(&mut self, buf: &mut B) -> Poll { if let Async::NotReady = ::poll_read(self) { - return Err(::would_block()) + return Ok(Async::NotReady) } let r = unsafe { let mut bufs: [_; 16] = Default::default(); @@ -524,12 +524,11 @@ impl<'a> AsyncRead for &'a TcpStream { unsafe { buf.advance_mut(n); } Ok(Async::Ready(n)) } - Err(e) => { - if e.kind() == io::ErrorKind::WouldBlock { - self.io.need_read(); - } - Err(e) + Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => { + self.io.need_read(); + Ok(Async::NotReady) } + Err(e) => Err(e), } } }