From 70806d05b6af00161214e2d027c703ccc75b7b86 Mon Sep 17 00:00:00 2001 From: SPARCS Date: Fri, 15 Mar 2024 13:40:54 -0700 Subject: [PATCH] print warning if send could not be spawn; cancel token if daemon errors --- cfdp-daemon/src/lib.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/cfdp-daemon/src/lib.rs b/cfdp-daemon/src/lib.rs index e8db87f..117cd8f 100644 --- a/cfdp-daemon/src/lib.rs +++ b/cfdp-daemon/src/lib.rs @@ -590,7 +590,12 @@ impl Daemon { // it has initiated but there is no active transaction. warn!("{error}") } - Err(err) => return Err(err), + Err(err) => { + if !self.terminate.load(Ordering::Relaxed) { + self.terminate.store(true, Ordering::Relaxed); + } + return Err(err), + } }, None => { if !self.terminate.load(Ordering::Relaxed) { @@ -603,12 +608,23 @@ impl Daemon { primitive = self.primitive_rx.recv() => match primitive { Some(primitive) => match self.process_primitive(primitive).await{ Ok(_) => {}, + Err(error & DaemonError::SpawnSend(_)) => { + // Unable to spawn a send transaction. + // There are lots of reasons this cound happen. + // Mostly if a user asked for a file that doesn't exist. + warn!("{error}") + }, Err(error @ DaemonError::TransactionCommuncation(_, _)) => { // This occcurs most likely if a user is attempting to // interact with a transaction that is already finished. warn!("{error}") } - Err(err) => return Err(err), + Err(err) => { + if !self.terminate.load(Ordering::Relaxed) { + self.terminate.store(true, Ordering::Relaxed); + } + return Err(err), + } }, None => { info!("User triggered daemon shutdown.");