diff --git a/src/bin/dosh-client.rs b/src/bin/dosh-client.rs index 1b9ed67..1a1fc1c 100644 --- a/src/bin/dosh-client.rs +++ b/src/bin/dosh-client.rs @@ -2380,8 +2380,21 @@ struct FileForwarder { impl Drop for FileForwarder { fn drop(&mut self) { - let _ = self.child.kill(); - let _ = self.child.wait(); + let exited = self.child.try_wait().ok().flatten(); + if exited.is_none() { + let _ = self.child.kill(); + let _ = self.child.wait(); + return; + } + if exited.is_some_and(|status| !status.success()) { + let mut stderr = String::new(); + if let Some(mut pipe) = self.child.stderr.take() { + let _ = pipe.read_to_string(&mut stderr); + } + if !stderr.trim().is_empty() { + eprintln!("Dosh service forwarder failed:\n{}", stderr.trim_end()); + } + } } }