diff --git a/src/net/tcp.rs b/src/net/tcp.rs index 3f725adb4..b20f18ec7 100644 --- a/src/net/tcp.rs +++ b/src/net/tcp.rs @@ -541,7 +541,7 @@ impl<'a> AsyncWrite for &'a TcpStream { fn write_buf(&mut self, buf: &mut B) -> Poll { if let Async::NotReady = ::poll_write(self) { - return Err(::would_block()) + return Ok(Async::NotReady) } let r = { let mut bufs: [_; 16] = Default::default(); @@ -553,12 +553,11 @@ impl<'a> AsyncWrite for &'a TcpStream { buf.advance(n); Ok(Async::Ready(n)) } - Err(e) => { - if e.kind() == io::ErrorKind::WouldBlock { - self.io.need_write(); - } - Err(e) + Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => { + self.io.need_write(); + Ok(Async::NotReady) } + Err(e) => Err(e), } } }