diff --git a/src/ephemeral.rs b/src/ephemeral.rs index 9146698c1..15fe7e6cb 100644 --- a/src/ephemeral.rs +++ b/src/ephemeral.rs @@ -569,9 +569,21 @@ pub(crate) async fn ephemeral_loop(context: &Context, interrupt_receiver: Receiv "Ephemeral loop waiting for deletion in {} or interrupt", duration_to_str(duration) ); - if timeout(duration, interrupt_receiver.recv()).await.is_ok() { - // received an interruption signal, recompute waiting time (if any) - continue; + match timeout(duration, interrupt_receiver.recv()).await { + Ok(Ok(())) => { + // received an interruption signal, recompute waiting time (if any) + continue; + } + Ok(Err(err)) => { + warn!( + context, + "Interrupt channel closed, ephemeral loop exits now: {err:#}." + ); + return; + } + Err(_err) => { + // Timeout. + } } } diff --git a/src/location.rs b/src/location.rs index 95e6a7ffd..879bd27e4 100644 --- a/src/location.rs +++ b/src/location.rs @@ -679,7 +679,21 @@ pub(crate) async fn location_loop(context: &Context, interrupt_receiver: Receive "Location loop is waiting for {} or interrupt", duration_to_str(duration) ); - timeout(duration, interrupt_receiver.recv()).await.ok(); + match timeout(duration, interrupt_receiver.recv()).await { + Err(_err) => { + info!(context, "Location loop timeout."); + } + Ok(Err(err)) => { + warn!( + context, + "Interrupt channel closed, location loop exits now: {err:#}." + ); + return; + } + Ok(Ok(())) => { + info!(context, "Location loop received interrupt."); + } + } } }