From a1884dbc816b32347d42c9cf3a4fdc250c13144e Mon Sep 17 00:00:00 2001 From: kozabrada123 <59031733+kozabrada123@users.noreply.github.com> Date: Tue, 16 Apr 2024 15:35:02 +0200 Subject: [PATCH] fix: error handling while loading native certs --- src/gateway/backends/tungstenite.rs | 12 ++++++++++-- src/voice/gateway/backends/tungstenite.rs | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/gateway/backends/tungstenite.rs b/src/gateway/backends/tungstenite.rs index fe537d3..a9f9f64 100644 --- a/src/gateway/backends/tungstenite.rs +++ b/src/gateway/backends/tungstenite.rs @@ -27,8 +27,16 @@ impl TungsteniteBackend { websocket_url: &str, ) -> Result<(TungsteniteSink, TungsteniteStream), crate::errors::GatewayError> { let mut roots = rustls::RootCertStore::empty(); - for cert in rustls_native_certs::load_native_certs().expect("could not load platform certs") - { + let certs = rustls_native_certs::load_native_certs(); + + if let Err(e) = certs { + log::error!("Failed to load platform native certs! {:?}", e); + return Err(GatewayError::CannotConnect { + error: format!("{:?}", e), + }); + } + + for cert in certs.unwrap() { roots.add(&rustls::Certificate(cert.0)).unwrap(); } let (websocket_stream, _) = match connect_async_tls_with_config( diff --git a/src/voice/gateway/backends/tungstenite.rs b/src/voice/gateway/backends/tungstenite.rs index 10e2748..add7b24 100644 --- a/src/voice/gateway/backends/tungstenite.rs +++ b/src/voice/gateway/backends/tungstenite.rs @@ -26,8 +26,16 @@ impl TungsteniteBackend { websocket_url: &str, ) -> Result<(TungsteniteSink, TungsteniteStream), crate::errors::VoiceGatewayError> { let mut roots = rustls::RootCertStore::empty(); - for cert in rustls_native_certs::load_native_certs().expect("could not load platform certs") - { + let certs = rustls_native_certs::load_native_certs(); + + if let Err(e) = certs { + log::error!("Failed to load platform native certs! {:?}", e); + return Err(GatewayError::CannotConnect { + error: format!("{:?}", e), + }); + } + + for cert in certs.unwrap() { roots.add(&rustls::Certificate(cert.0)).unwrap(); } let (websocket_stream, _) = match connect_async_tls_with_config(