From 79bf7d92958bb9e9c33e73c009bfae0a76287cb8 Mon Sep 17 00:00:00 2001 From: M1 Date: Wed, 18 Mar 2026 12:58:12 +0400 Subject: [PATCH] fix: wrap curl output() in tokio timeout in case process hangs on stdout --- apps/monitor/src/runner.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/monitor/src/runner.rs b/apps/monitor/src/runner.rs index 3c58d67..f33de13 100644 --- a/apps/monitor/src/runner.rs +++ b/apps/monitor/src/runner.rs @@ -192,7 +192,12 @@ async fn run_curl( cmd.arg(url); - let output = cmd.output().await.map_err(|e| format!("curl exec error: {e}"))?; + let output = tokio::time::timeout( + std::time::Duration::from_secs_f64(timeout_secs + 2.0), + cmd.output() + ).await + .map_err(|_| format!("timed out after {:.0}s", timeout_secs))? + .map_err(|e| format!("curl exec error: {e}"))?; if !output.status.success() { let stderr = String::from_utf8_lossy(&output.stderr).to_string();