From 99c1e0c621315810a7907a0a9e93330715ebeed8 Mon Sep 17 00:00:00 2001 From: Andras Pinter Date: Fri, 18 Nov 2022 14:04:19 +0100 Subject: [PATCH] fix(impl_tokio): prevent panic on errorneous BlockingDirections --- .../src/session_stream/impl_tokio.rs | 24 +++++++------------ 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/async-ssh2-lite/src/session_stream/impl_tokio.rs b/async-ssh2-lite/src/session_stream/impl_tokio.rs index 6812352..b2dbe7f 100644 --- a/async-ssh2-lite/src/session_stream/impl_tokio.rs +++ b/async-ssh2-lite/src/session_stream/impl_tokio.rs @@ -35,9 +35,7 @@ impl AsyncSessionStream for TcpStream { } match sess.block_directions() { - BlockDirections::None => { - unreachable!("") - } + BlockDirections::None => continue, BlockDirections::Inbound => { assert!(expected_block_directions.is_readable()); @@ -77,26 +75,20 @@ impl AsyncSessionStream for TcpStream { } match sess.block_directions() { - BlockDirections::None => { - unreachable!("") - } - BlockDirections::Inbound => { - assert!(expected_block_directions.is_readable()); - + BlockDirections::Inbound if expected_block_directions.is_readable() => { ready!(self.poll_read_ready(cx))?; } - BlockDirections::Outbound => { - assert!(expected_block_directions.is_writable()); - + BlockDirections::Outbound if expected_block_directions.is_writable() => { ready!(self.poll_write_ready(cx))?; } - BlockDirections::Both => { - assert!(expected_block_directions.is_readable()); - assert!(expected_block_directions.is_writable()); - + BlockDirections::Both + if expected_block_directions.is_readable() + && expected_block_directions.is_writable() => + { ready!(self.poll_write_ready(cx))?; ready!(self.poll_read_ready(cx))?; } + _ => return Poll::Pending, } if let Some(dur) = sleep_dur {