diff --git a/crates/remote/src/transport.rs b/crates/remote/src/transport.rs index ebf643352fce8a14d88b7c870b177d2c6b7e7de0..2dedf7ace0d7eab7daf34cc8e183f84ef5f9126a 100644 --- a/crates/remote/src/transport.rs +++ b/crates/remote/src/transport.rs @@ -158,6 +158,9 @@ fn handle_rpc_messages_over_child_process_stdio( } }; let status = remote_proxy_process.status().await?.code().unwrap_or(1); + if status != 0 { + anyhow::bail!("Remote server exited with status {status}"); + } match result { Ok(_) => Ok(status), Err(error) => Err(error), diff --git a/crates/remote/src/transport/docker.rs b/crates/remote/src/transport/docker.rs index 9c14aa874941a5cdcd824d4adaeb41d694e347d8..1d84181285b19b2f1e2cca57783e77ab74b6bca2 100644 --- a/crates/remote/src/transport/docker.rs +++ b/crates/remote/src/transport/docker.rs @@ -582,19 +582,21 @@ impl RemoteConnection for DockerExecConnection { return Task::ready(Err(anyhow!("Remote binary path not set"))); }; - let mut docker_args = vec![ - "exec".to_string(), - "-w".to_string(), - self.remote_dir_for_server.clone(), - "-i".to_string(), - self.connection_options.container_id.to_string(), - ]; + let mut docker_args = vec!["exec".to_string()]; for env_var in ["RUST_LOG", "RUST_BACKTRACE", "ZED_GENERATE_MINIDUMPS"] { if let Some(value) = std::env::var(env_var).ok() { docker_args.push("-e".to_string()); docker_args.push(format!("{}='{}'", env_var, value)); } } + + docker_args.extend([ + "-w".to_string(), + self.remote_dir_for_server.clone(), + "-i".to_string(), + self.connection_options.container_id.to_string(), + ]); + let val = remote_binary_relpath .display(self.path_style()) .into_owned();