Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
node: Fix "signals" thread
Derick Eddington committed 1 year ago
commit 6f8d75a00daac96ee4b375b4a7e93cfb8988820c
parent 123f7eb6bbb3cb3f39257b325b2256ecd415fbe4
1 file changed +15 -4
modified radicle-node/src/runtime.rs
@@ -289,10 +289,21 @@ impl Runtime {
            let handle = self.handle.clone();
            || control::listen(self.control, handle)
        });
-
        let _signals = thread::spawn(&self.id, "signals", move || {
-
            if let Ok(Signal::Terminate | Signal::Interrupt) = self.signals.recv() {
-
                log::info!(target: "node", "Termination signal received; shutting down..");
-
                self.handle.shutdown().ok();
+
        let _signals = thread::spawn(&self.id, "signals", move || loop {
+
            match self.signals.recv() {
+
                Ok(Signal::Terminate | Signal::Interrupt) => {
+
                    log::info!(target: "node", "Termination signal received; shutting down..");
+
                    self.handle.shutdown().ok();
+
                    break;
+
                }
+
                Ok(Signal::Hangup) => {
+
                    log::debug!(target: "node", "Hangup signal (SIGHUP) received; ignoring..");
+
                }
+
                Ok(Signal::WindowChanged) => {}
+
                Err(e) => {
+
                    log::warn!(target: "node", "Signal notifications channel error: {e}");
+
                    break;
+
                }
            }
        });