From 26c26c4665309a95dc454d954740227be0b54422 Mon Sep 17 00:00:00 2001 From: Xinyi Gong Date: Tue, 8 Feb 2022 14:14:50 -0800 Subject: [PATCH] io: make duplex stream cooperative (#4470) Add coop checks on pipe poll_read and poll_write. Fixes: #4470 Refs: #4291, #4300 --- tokio/src/io/util/mem.rs | 4 ++-- tokio/tests/io_mem_stream.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tokio/src/io/util/mem.rs b/tokio/src/io/util/mem.rs index 1510db34587..4019db56ff4 100644 --- a/tokio/src/io/util/mem.rs +++ b/tokio/src/io/util/mem.rs @@ -245,7 +245,7 @@ impl AsyncRead for Pipe { cfg_not_coop! { fn poll_read( - mut self: Pin<&mut Self>, + self: Pin<&mut Self>, cx: &mut task::Context<'_>, buf: &mut ReadBuf<'_>, ) -> Poll> { @@ -273,7 +273,7 @@ impl AsyncWrite for Pipe { cfg_not_coop! { fn poll_write( - mut self: Pin<&mut Self>, + self: Pin<&mut Self>, cx: &mut task::Context<'_>, buf: &[u8], ) -> Poll> { diff --git a/tokio/tests/io_mem_stream.rs b/tokio/tests/io_mem_stream.rs index 4b5e7b7746f..a2c2dadfc90 100644 --- a/tokio/tests/io_mem_stream.rs +++ b/tokio/tests/io_mem_stream.rs @@ -111,9 +111,9 @@ async fn duplex_is_cooperative() { _ = async { loop { let buf = [3u8; 4096]; - let _ = tx.write_all(&buf).await; + tx.write_all(&buf).await.unwrap(); let mut buf = [0u8; 4096]; - let _ = rx.read(&mut buf).await; + rx.read(&mut buf).await.unwrap(); } } => {}, _ = tokio::task::yield_now() => {}