Skip to content

Commit 8c24eb8

Browse files
committed
feat: graceful shutdown for HTTPS server
1 parent b7d059f commit 8c24eb8

File tree

2 files changed

+7
-11
lines changed

2 files changed

+7
-11
lines changed

src/config/util/tls.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
use anyhow::{ensure, Context, Error, Result};
2-
use rustls::internal::msgs::codec::Codec;
3-
use rustls::Reader;
1+
use anyhow::{Context, Error, Result};
42
use rustls::{Certificate, PrivateKey};
5-
use rustls_pemfile::{pkcs8_private_keys, rsa_private_keys, Item};
3+
use rustls_pemfile::{pkcs8_private_keys, rsa_private_keys};
64
use serde::Deserialize;
75
use std::fs::File;
8-
use std::io::{BufRead, BufReader, Read};
9-
use std::iter;
6+
use std::io::BufReader;
107
use std::path::Path;
118
use std::str::FromStr;
129

@@ -40,7 +37,6 @@ pub fn load_cert(path: &Path) -> Result<Vec<Certificate>> {
4037
let mut buf_reader = BufReader::new(file);
4138
let cert_bytes = &rustls_pemfile::certs(&mut buf_reader).unwrap()[0];
4239

43-
ensure!(cert_bytes.len() > 0, "Empty certificate");
4440
Ok(vec![Certificate(cert_bytes.to_vec())])
4541
}
4642

@@ -61,6 +57,5 @@ pub fn load_private_key(path: &Path, kind: &PrivateKeyAlgorithm) -> Result<Priva
6157
})?,
6258
};
6359

64-
ensure!(keys.len() == 1, "Expected a single private key");
6560
Ok(PrivateKey(keys[0].clone()))
6661
}

src/server/mod.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ impl Server {
105105
println!("Serving HTTPS: {}", address);
106106
}
107107

108-
if let Err(e) = server
108+
let server_with_graceful_shutdown = server
109109
.serve(make_service_fn(|_| {
110110
// Move a clone of `handler` into the `service_fn`.
111111
let handler = handler.clone();
@@ -116,8 +116,9 @@ impl Server {
116116
}))
117117
}
118118
}))
119-
.await
120-
{
119+
.with_graceful_shutdown(crate::utils::signal::shutdown_signal());
120+
121+
if let Err(e) = server_with_graceful_shutdown.await {
121122
eprint!("Server Error: {}", e);
122123
}
123124
}

0 commit comments

Comments
 (0)