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
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:
+78
-63
@@ -486,22 +486,24 @@ async fn main() -> Result<()> {
|
|||||||
detach_once(&socket, &cred, 2).await?;
|
detach_once(&socket, &cred, 2).await?;
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
return run_terminal(
|
return trace_terminal_result(
|
||||||
socket,
|
run_terminal(
|
||||||
cred,
|
socket,
|
||||||
Some(target_udp_addr),
|
cred,
|
||||||
Some(frame),
|
Some(target_udp_addr),
|
||||||
predict,
|
Some(frame),
|
||||||
predict_mode,
|
predict,
|
||||||
escape_key,
|
predict_mode,
|
||||||
startup_command,
|
escape_key,
|
||||||
config.reconnect_timeout_secs,
|
startup_command,
|
||||||
Vec::new(),
|
config.reconnect_timeout_secs,
|
||||||
Vec::new(),
|
Vec::new(),
|
||||||
false,
|
Vec::new(),
|
||||||
None,
|
false,
|
||||||
)
|
None,
|
||||||
.await;
|
)
|
||||||
|
.await,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
log_debug(
|
log_debug(
|
||||||
@@ -525,22 +527,24 @@ async fn main() -> Result<()> {
|
|||||||
detach_once(&socket, &cred, 2).await?;
|
detach_once(&socket, &cred, 2).await?;
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
return run_terminal(
|
return trace_terminal_result(
|
||||||
socket,
|
run_terminal(
|
||||||
cred,
|
socket,
|
||||||
Some(target_udp_addr),
|
cred,
|
||||||
Some(frame),
|
Some(target_udp_addr),
|
||||||
predict,
|
Some(frame),
|
||||||
predict_mode,
|
predict,
|
||||||
escape_key,
|
predict_mode,
|
||||||
startup_command,
|
escape_key,
|
||||||
config.reconnect_timeout_secs,
|
startup_command,
|
||||||
Vec::new(),
|
config.reconnect_timeout_secs,
|
||||||
Vec::new(),
|
Vec::new(),
|
||||||
false,
|
Vec::new(),
|
||||||
None,
|
false,
|
||||||
)
|
None,
|
||||||
.await;
|
)
|
||||||
|
.await,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
log_debug(
|
log_debug(
|
||||||
@@ -601,22 +605,24 @@ async fn main() -> Result<()> {
|
|||||||
detach_once(&socket, &cred, 2).await?;
|
detach_once(&socket, &cred, 2).await?;
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
return run_terminal(
|
return trace_terminal_result(
|
||||||
socket,
|
run_terminal(
|
||||||
cred,
|
socket,
|
||||||
Some(addr),
|
cred,
|
||||||
Some(frame),
|
Some(addr),
|
||||||
predict,
|
Some(frame),
|
||||||
predict_mode,
|
predict,
|
||||||
escape_key,
|
predict_mode,
|
||||||
startup_command,
|
escape_key,
|
||||||
config.reconnect_timeout_secs,
|
startup_command,
|
||||||
local_forwards,
|
config.reconnect_timeout_secs,
|
||||||
dynamic_forwards,
|
local_forwards,
|
||||||
args.forward_only,
|
dynamic_forwards,
|
||||||
agent_sock,
|
args.forward_only,
|
||||||
)
|
agent_sock,
|
||||||
.await;
|
)
|
||||||
|
.await,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
Err(err) if !forwarding_requested && auth_allows(&auth_preference, "ssh") => {
|
Err(err) if !forwarding_requested && auth_allows(&auth_preference, "ssh") => {
|
||||||
log_debug(
|
log_debug(
|
||||||
@@ -680,22 +686,24 @@ async fn main() -> Result<()> {
|
|||||||
detach_once(&socket, &cred, 2).await?;
|
detach_once(&socket, &cred, 2).await?;
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
run_terminal(
|
trace_terminal_result(
|
||||||
socket,
|
run_terminal(
|
||||||
cred,
|
socket,
|
||||||
Some(target_udp_addr),
|
cred,
|
||||||
Some(first),
|
Some(target_udp_addr),
|
||||||
predict,
|
Some(first),
|
||||||
predict_mode,
|
predict,
|
||||||
escape_key,
|
predict_mode,
|
||||||
startup_command,
|
escape_key,
|
||||||
config.reconnect_timeout_secs,
|
startup_command,
|
||||||
Vec::new(),
|
config.reconnect_timeout_secs,
|
||||||
Vec::new(),
|
Vec::new(),
|
||||||
false,
|
Vec::new(),
|
||||||
None,
|
false,
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.await,
|
||||||
)
|
)
|
||||||
.await
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_trust_command(config: &dosh::config::ClientConfig, args: &Args) -> Result<()> {
|
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)
|
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)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
async fn run_terminal(
|
async fn run_terminal(
|
||||||
socket: UdpSocket,
|
socket: UdpSocket,
|
||||||
|
|||||||
Reference in New Issue
Block a user