From aea4d0f3fbbc82a4df7e09478fba08bc16a60c54 Mon Sep 17 00:00:00 2001 From: Ferdinand Schober Date: Fri, 12 Jul 2024 18:07:28 +0200 Subject: [PATCH] fix edge case where cancellation is not possible --- src/server/capture_task.rs | 7 ++++++- src/server/emulation_task.rs | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/server/capture_task.rs b/src/server/capture_task.rs index fa889c7..78d87f7 100644 --- a/src/server/capture_task.rs +++ b/src/server/capture_task.rs @@ -59,7 +59,12 @@ async fn capture_task( if server.is_cancelled() { break; } - server.capture_notified().await; + + // allow cancellation + tokio::select! { + _ = server.capture_notified() => {}, + _ = server.cancelled() => break, + } } } diff --git a/src/server/emulation_task.rs b/src/server/emulation_task.rs index 203c8be..c499433 100644 --- a/src/server/emulation_task.rs +++ b/src/server/emulation_task.rs @@ -69,7 +69,13 @@ async fn emulation_task( break; } log::info!("waiting for user to request input emulation ..."); - server.emulation_notified().await; + + // allow cancellation + tokio::select! { + _ = server.emulation_notified() => {}, + _ = server.cancelled() => break, + } + log::info!("... done"); } }