diff --git a/crates/remote/src/ssh_session.rs b/crates/remote/src/ssh_session.rs index 9d9d916f19..06a7f810e6 100644 --- a/crates/remote/src/ssh_session.rs +++ b/crates/remote/src/ssh_session.rs @@ -56,7 +56,7 @@ pub struct SshSession { struct SshClientState { socket: SshSocket, - _master_process: process::Child, + master_process: process::Child, _temp_dir: TempDir, } @@ -593,7 +593,7 @@ impl SshClientState { connection_options, socket_path, }, - _master_process: master_process, + master_process, _temp_dir: temp_dir, }) } @@ -716,6 +716,14 @@ impl SshClientState { } } +impl Drop for SshClientState { + fn drop(&mut self) { + if let Err(error) = self.master_process.kill() { + log::error!("failed to kill SSH master process: {}", error); + } + } +} + impl SshSocket { fn ssh_command>(&self, program: S) -> process::Command { let mut command = process::Command::new("ssh");