From 12398b8e5a642da6ea993d776856f93a743c63b7 Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Mon, 7 Apr 2025 23:57:22 +0200 Subject: [PATCH] Disconnect on CLI parse error/help --- src/ssh.rs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/ssh.rs b/src/ssh.rs index f19955a..f595901 100644 --- a/src/ssh.rs +++ b/src/ssh.rs @@ -100,7 +100,6 @@ impl russh::server::Handler for Handler { data: &[u8], _session: &mut Session, ) -> Result<(), Self::Error> { - // TODO: Graceful shutdown if data == [3] { return Err(russh::Error::Disconnect); } @@ -126,16 +125,22 @@ impl russh::server::Handler for Handler { trace!("Making tunnels public"); self.set_access(TunnelAccess::Public).await; } + + session.channel_success(channel) } Err(err) => { - self.send(format!("{err}")); - // TODO: This closes the whole thing before we can send the message - // Instead use the graceful shutdown once that is implemented - // session.channel_failure(channel) - } - }; + trace!("Sending error/help message and disconnecting"); + session + .disconnect( + russh::Disconnect::ByApplication, + &format!("\n\r{err}"), + "EN", + ) + .unwrap(); - session.channel_success(channel) + session.channel_failure(channel) + } + } } async fn tcpip_forward(