From 5dcbc18f857b83c0e3edc93b1d33cda3643cdb3a Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Tue, 4 Oct 2022 08:30:18 +0200 Subject: [PATCH] Save current state on `SIGHUP` as well Fixes #948 --- src/main.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index d507348..080e521 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,7 +19,7 @@ use librespot_playback::audio_backend; use log::{error, info, trace}; #[cfg(unix)] -use signal_hook::{consts::SIGTERM, iterator::Signals}; +use signal_hook::{consts::SIGHUP, consts::SIGTERM, iterator::Signals}; mod authentication; mod command; @@ -316,17 +316,16 @@ async fn main() -> Result<(), String> { cursive.add_fullscreen_layer(layout.with_name("main")); - // catch SIGTERM to save current state #[cfg(unix)] - let mut signals = Signals::new(&[SIGTERM]).expect("could not register SIGTERM handler"); + let mut signals = Signals::new(&[SIGTERM, SIGHUP]).expect("could not register signal handler"); // cursive event loop while cursive.is_running() { cursive.step(); #[cfg(unix)] for signal in signals.pending() { - if signal == SIGTERM { - info!("Caught SIGTERM, cleaning up and closing"); + if signal == SIGTERM || signal == SIGHUP { + info!("Caught {}, cleaning up and closing", signal); if let Some(data) = cursive.user_data::().cloned() { data.cmd.handle(&mut cursive, Command::Quit); }