Return NotReady from TcpStream::write_buf

Closes #194
This commit is contained in:
Alex Crichton
2017-03-27 07:33:18 -07:00
parent 37e2870f04
commit 45e69bfb61
+5 -6
View File
@@ -541,7 +541,7 @@ impl<'a> AsyncWrite for &'a TcpStream {
fn write_buf<B: Buf>(&mut self, buf: &mut B) -> Poll<usize, io::Error> { fn write_buf<B: Buf>(&mut self, buf: &mut B) -> Poll<usize, io::Error> {
if let Async::NotReady = <TcpStream>::poll_write(self) { if let Async::NotReady = <TcpStream>::poll_write(self) {
return Err(::would_block()) return Ok(Async::NotReady)
} }
let r = { let r = {
let mut bufs: [_; 16] = Default::default(); let mut bufs: [_; 16] = Default::default();
@@ -553,12 +553,11 @@ impl<'a> AsyncWrite for &'a TcpStream {
buf.advance(n); buf.advance(n);
Ok(Async::Ready(n)) Ok(Async::Ready(n))
} }
Err(e) => { Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {
if e.kind() == io::ErrorKind::WouldBlock { self.io.need_write();
self.io.need_write(); Ok(Async::NotReady)
}
Err(e)
} }
Err(e) => Err(e),
} }
} }
} }