From 45e69bfb61d5638cd89b8ed0c2808738a9c8802b Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Mar 2017 07:33:18 -0700 Subject: [PATCH] Return `NotReady` from TcpStream::write_buf Closes #194 --- src/net/tcp.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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), } } }