From f8e2f50c6020b518fb6d3a2c6a5e0ae6f42e71c6 Mon Sep 17 00:00:00 2001 From: Alex Zenla Date: Tue, 5 Mar 2024 23:10:31 +0000 Subject: [PATCH] daemon: mask SIGHUP --- Cargo.toml | 1 + daemon/Cargo.toml | 1 + daemon/bin/daemon.rs | 9 +++++++++ 3 files changed, 11 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index f60a243..e813f4a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -58,6 +58,7 @@ path-absolutize = "3.1.1" tokio-tun = "0.11.2" tokio-listener = "0.3.1" trait-variant = "0.1.1" +signal-hook = "0.3.17" [workspace.dependencies.uuid] version = "1.6.1" diff --git a/daemon/Cargo.toml b/daemon/Cargo.toml index b7811b8..ee9335e 100644 --- a/daemon/Cargo.toml +++ b/daemon/Cargo.toml @@ -31,6 +31,7 @@ futures = { workspace = true } bytes = { workspace = true } tokio-stream = { workspace = true } async-trait = { workspace = true } +signal-hook = { workspace = true } [dependencies.tokio-listener] workspace = true diff --git a/daemon/bin/daemon.rs b/daemon/bin/daemon.rs index 75b45b3..0741174 100644 --- a/daemon/bin/daemon.rs +++ b/daemon/bin/daemon.rs @@ -1,3 +1,5 @@ +use std::sync::{atomic::AtomicBool, Arc}; + use anyhow::{anyhow, Result}; use clap::Parser; use env_logger::Env; @@ -15,6 +17,7 @@ struct Args { #[tokio::main(flavor = "multi_thread", worker_threads = 10)] async fn main() -> Result<()> { env_logger::Builder::from_env(Env::default().default_filter_or("warn")).init(); + mask_sighup()?; let args = Args::parse(); let Some(listener) = args.listener.bind().await else { @@ -25,3 +28,9 @@ async fn main() -> Result<()> { daemon.listen(listener?).await?; Ok(()) } + +fn mask_sighup() -> Result<()> { + let flag = Arc::new(AtomicBool::new(false)); + signal_hook::flag::register(signal_hook::consts::SIGHUP, flag)?; + Ok(()) +}