From b9ee290ca0ff471cfbad1590923ff15546714b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Sat, 23 May 2020 17:15:11 +0200 Subject: [PATCH] aquatic_ws: add more anyhow error context annotations --- TODO.md | 1 - aquatic_ws/src/lib/lib.rs | 11 +++++++---- aquatic_ws/src/lib/network/mod.rs | 2 +- aquatic_ws/src/lib/network/utils.rs | 17 +++++++++++------ 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/TODO.md b/TODO.md index 96e7d2f..827a811 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,6 @@ # TODO ## aquatic_ws -* add more anyhow context annotations for errors * add sensible logging method, maybe stderrlog with quiet as default ## aquatic_udp diff --git a/aquatic_ws/src/lib/lib.rs b/aquatic_ws/src/lib/lib.rs index 3ccd343..356c970 100644 --- a/aquatic_ws/src/lib/lib.rs +++ b/aquatic_ws/src/lib/lib.rs @@ -119,16 +119,19 @@ pub fn create_tls_acceptor( ) -> anyhow::Result> { if config.network.use_tls { let mut identity_bytes = Vec::new(); - let mut file = File::open(&config.network.tls_pkcs12_path)?; + let mut file = File::open(&config.network.tls_pkcs12_path) + .context("Couldn't open pkcs12 identity file")?; - file.read_to_end(&mut identity_bytes)?; + file.read_to_end(&mut identity_bytes) + .context("Couldn't read pkcs12 identity file")?; let identity = Identity::from_pkcs12( &mut identity_bytes, &config.network.tls_pkcs12_password - )?; + ).context("Couldn't parse pkcs12 identity file")?; - let acceptor = TlsAcceptor::new(identity)?; + let acceptor = TlsAcceptor::new(identity) + .context("Couldn't create TlsAcceptor from pkcs12 identity")?; Ok(Some(acceptor)) } else { diff --git a/aquatic_ws/src/lib/network/mod.rs b/aquatic_ws/src/lib/network/mod.rs index b46ad76..9552dc0 100644 --- a/aquatic_ws/src/lib/network/mod.rs +++ b/aquatic_ws/src/lib/network/mod.rs @@ -42,7 +42,7 @@ pub fn run_socket_worker( }, Err(err) => { socket_worker_statuses.lock()[socket_worker_index] = Some( - Err(format!("Couldn't create TCP listener: {}", err)) + Err(format!("Couldn't open socket: {:#}", err)) ); } } diff --git a/aquatic_ws/src/lib/network/utils.rs b/aquatic_ws/src/lib/network/utils.rs index 7783bdf..ae19ff9 100644 --- a/aquatic_ws/src/lib/network/utils.rs +++ b/aquatic_ws/src/lib/network/utils.rs @@ -16,19 +16,24 @@ pub fn create_listener( TcpBuilder::new_v4() } else { TcpBuilder::new_v6() - }?; + }.context("Couldn't create TcpBuilder")?; if config.network.ipv6_only { builder = builder.only_v6(true) - .context("Failed setting ipv6_only to true")? + .context("Couldn't put socket in ipv6 only mode")? } - builder = builder.reuse_port(true)?; - builder = builder.bind(&config.network.address)?; + builder = builder.reuse_port(true) + .context("Couldn't put socket in reuse_port mode")?; + builder = builder.bind(&config.network.address).with_context(|| + format!("Couldn't bind socket to address {}", config.network.address) + )?; - let listener = builder.listen(128)?; + let listener = builder.listen(128) + .context("Couldn't listen for connections on socket")?; - listener.set_nonblocking(true)?; + listener.set_nonblocking(true) + .context("Couldn't put tcp listener in non-blocking mode")?; Ok(listener) }