Trace terminal loop failures
ci / test (push) Canceled after 0s
ci / fuzz-smoke (push) Canceled after 0s
ci / macos-client (macos-aarch64, macos-14) (push) Canceled after 0s
ci / macos-client (macos-x86_64, macos-13) (push) Canceled after 0s
ci / windows-client (push) Canceled after 0s
ci / package-release (linux-x86_64, ubuntu-latest, , , ) (push) Canceled after 0s
ci / package-release (macos-aarch64, macos-14, , , ) (push) Canceled after 0s
ci / package-release (macos-x86_64, macos-13, , , ) (push) Canceled after 0s
ci / package-release (windows-aarch64, windows-latest, aarch64, windows, aarch64-pc-windows-msvc) (push) Canceled after 0s
ci / package-release (windows-x86_64, windows-latest, , , ) (push) Canceled after 0s
ci / remote-bench (push) Canceled after 0s
ci / publish-gitea-release (push) Canceled after 0s

This commit is contained in:
DuProcess
2026-07-17 19:55:16 -04:00
parent 7a9ad38657
commit 86a1942aa0
+78 -63
View File
@@ -486,22 +486,24 @@ async fn main() -> Result<()> {
detach_once(&socket, &cred, 2).await?;
return Ok(());
}
return run_terminal(
socket,
cred,
Some(target_udp_addr),
Some(frame),
predict,
predict_mode,
escape_key,
startup_command,
config.reconnect_timeout_secs,
Vec::new(),
Vec::new(),
false,
None,
)
.await;
return trace_terminal_result(
run_terminal(
socket,
cred,
Some(target_udp_addr),
Some(frame),
predict,
predict_mode,
escape_key,
startup_command,
config.reconnect_timeout_secs,
Vec::new(),
Vec::new(),
false,
None,
)
.await,
);
}
Err(err) => {
log_debug(
@@ -525,22 +527,24 @@ async fn main() -> Result<()> {
detach_once(&socket, &cred, 2).await?;
return Ok(());
}
return run_terminal(
socket,
cred,
Some(target_udp_addr),
Some(frame),
predict,
predict_mode,
escape_key,
startup_command,
config.reconnect_timeout_secs,
Vec::new(),
Vec::new(),
false,
None,
)
.await;
return trace_terminal_result(
run_terminal(
socket,
cred,
Some(target_udp_addr),
Some(frame),
predict,
predict_mode,
escape_key,
startup_command,
config.reconnect_timeout_secs,
Vec::new(),
Vec::new(),
false,
None,
)
.await,
);
}
Err(err) => {
log_debug(
@@ -601,22 +605,24 @@ async fn main() -> Result<()> {
detach_once(&socket, &cred, 2).await?;
return Ok(());
}
return run_terminal(
socket,
cred,
Some(addr),
Some(frame),
predict,
predict_mode,
escape_key,
startup_command,
config.reconnect_timeout_secs,
local_forwards,
dynamic_forwards,
args.forward_only,
agent_sock,
)
.await;
return trace_terminal_result(
run_terminal(
socket,
cred,
Some(addr),
Some(frame),
predict,
predict_mode,
escape_key,
startup_command,
config.reconnect_timeout_secs,
local_forwards,
dynamic_forwards,
args.forward_only,
agent_sock,
)
.await,
);
}
Err(err) if !forwarding_requested && auth_allows(&auth_preference, "ssh") => {
log_debug(
@@ -680,22 +686,24 @@ async fn main() -> Result<()> {
detach_once(&socket, &cred, 2).await?;
return Ok(());
}
run_terminal(
socket,
cred,
Some(target_udp_addr),
Some(first),
predict,
predict_mode,
escape_key,
startup_command,
config.reconnect_timeout_secs,
Vec::new(),
Vec::new(),
false,
None,
trace_terminal_result(
run_terminal(
socket,
cred,
Some(target_udp_addr),
Some(first),
predict,
predict_mode,
escape_key,
startup_command,
config.reconnect_timeout_secs,
Vec::new(),
Vec::new(),
false,
None,
)
.await,
)
.await
}
fn run_trust_command(config: &dosh::config::ClientConfig, args: &Args) -> Result<()> {
@@ -6495,6 +6503,13 @@ fn terminal_input_channel() -> (mpsc::Sender<Vec<u8>>, mpsc::Receiver<Vec<u8>>)
mpsc::channel(STDIN_QUEUE_CAPACITY)
}
fn trace_terminal_result(result: Result<()>) -> Result<()> {
if let Err(err) = &result {
dosh::trace::event("client.terminal_error", &[("error", format!("{err:#}"))]);
}
result
}
#[allow(clippy::too_many_arguments)]
async fn run_terminal(
socket: UdpSocket,