diff --git a/src/bin/cas.rs b/src/bin/cas.rs index 90a735919..bf3895271 100644 --- a/src/bin/cas.rs +++ b/src/bin/cas.rs @@ -48,6 +48,8 @@ use parking_lot::Mutex; use rustls_pemfile::{certs, pkcs8_private_keys}; use scopeguard::guard; use tokio::net::TcpListener; +#[cfg(target_family = "unix")] +use tokio::signal::unix::{signal, SignalKind}; use tokio::task::spawn_blocking; use tokio_rustls::rustls::{Certificate, PrivateKey, ServerConfig as TlsServerConfig}; use tokio_rustls::TlsAcceptor; @@ -711,5 +713,15 @@ fn main() -> Result<(), Box> { std::process::exit(130); }); + #[cfg(target_family = "unix")] + runtime.spawn(async move { + signal(SignalKind::terminate()) + .expect("Failed to listen to SIGTERM") + .recv() + .await; + eprintln!("Process terminated via SIGTERM"); + std::process::exit(143); + }); + runtime.block_on(inner_main(cfg, server_start_time)) }