Terminate cleanly on SIGINT

This commit is contained in:
Kenny Levinsen
2020-06-14 19:41:26 +02:00
parent 1a263c94e6
commit c71b83eca7

View File

@@ -160,6 +160,7 @@ pub async fn main(config: Config) -> Result<(), Error> {
let mut alarm = signal(SignalKind::alarm()).expect("unable to listen for SIGALRM");
let mut child = signal(SignalKind::child()).expect("unable to listen for SIGCHLD");
let mut term = signal(SignalKind::terminate()).expect("unable to listen for SIGTERM");
let mut int = signal(SignalKind::interrupt()).expect("unable to listen for SIGINT");
loop {
tokio::select! {
@@ -169,6 +170,10 @@ pub async fn main(config: Config) -> Result<(), Error> {
ctx.terminate().await.map_err(|e| format!("terminate: {}", e))?;
break;
}
_ = int.recv() => {
ctx.terminate().await.map_err(|e| format!("terminate: {}", e))?;
break;
}
stream = listener.0.accept() => match stream {
Ok((stream, _)) => {
let client_ctx = ctx.clone();