Skip to content

Commit 4245990

Browse files
committed
Fail TLS listener gracefully
1 parent d294b38 commit 4245990

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

server/src/server.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,13 @@ async fn tcp_loop(state: Arc<Mutex<NTServer>>, tx: Sender<ServerMessage>) -> any
6262

6363
async fn tls_loop(state: Arc<Mutex<NTServer>>, tx: Sender<ServerMessage>) -> anyhow::Result<()> {
6464
let listener = TcpListener::bind("0.0.0.0:5811").await?;
65-
let acceptor = generate_acceptor();
65+
let acceptor = match generate_acceptor() {
66+
Ok(acceptor) => acceptor,
67+
Err(e) => {
68+
log::error!("Unable to initialize TLS port: {}", e);
69+
return Ok(());
70+
}
71+
};
6672

6773
while let Ok((sock, addr)) = listener.accept().await {
6874
log::info!("Secure TCP connection at {}", addr);

server/src/server/tls.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,24 @@ use rustls::{PrivateKey, Certificate, ServerConfig, NoClientAuth};
33
use std::io::BufReader;
44
use std::fs::File;
55
use async_tls::TlsAcceptor;
6+
use anyhow::Result;
67

7-
fn load_key() -> Vec<PrivateKey> {
8-
pkcs8_private_keys(&mut BufReader::new(File::open("./NT4.key").unwrap()))
9-
.unwrap()
8+
fn load_key() -> Result<Vec<PrivateKey>> {
9+
pkcs8_private_keys(&mut BufReader::new(File::open("./NT4.key")?))
10+
.map_err(|_| anyhow::anyhow!("Unable to decode PKCS8 private key"))
1011
}
1112

12-
fn load_cert() -> Vec<Certificate> {
13-
certs(&mut BufReader::new(File::open("./NT4.crt.sgn").unwrap()))
14-
.unwrap()
13+
fn load_cert() -> Result<Vec<Certificate>> {
14+
certs(&mut BufReader::new(File::open("./NT4.crt.sgn")?))
15+
.map_err(|_| anyhow::anyhow!("Unable to decode certificate"))
1516
}
1617

17-
pub fn generate_acceptor() -> TlsAcceptor {
18-
let mut keys = load_key();
19-
let cert = load_cert();
18+
pub fn generate_acceptor() -> Result<TlsAcceptor> {
19+
let mut keys = load_key()?;
20+
let cert = load_cert()?;
2021

2122
let mut config = ServerConfig::new(NoClientAuth::new());
22-
config.set_single_cert(cert, keys.remove(0))
23-
.unwrap();
23+
config.set_single_cert(cert, keys.remove(0))?;
2424

25-
TlsAcceptor::from(config)
26-
}
25+
Ok(TlsAcceptor::from(config))
26+
}

0 commit comments

Comments
 (0)