From 51e79294d8fbfb1bd4be8584e2d32ff0712227aa Mon Sep 17 00:00:00 2001 From: Fuwn Date: Thu, 11 Sep 2025 06:04:01 +0000 Subject: fix(request): Handle invalid URLs --- src/request/blocking.rs | 7 +++++-- src/request/non_blocking.rs | 10 ++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src/request') diff --git a/src/request/blocking.rs b/src/request/blocking.rs index 2002ed8..984f886 100644 --- a/src/request/blocking.rs +++ b/src/request/blocking.rs @@ -44,13 +44,16 @@ pub fn request(url: &url::Url) -> anyhow::Result { .with_safe_defaults() .with_custom_certificate_verifier(std::sync::Arc::new(GermVerifier::new())) .with_no_client_auth(); + let domain = url + .domain() + .ok_or_else(|| anyhow::anyhow!("Invalid URL: missing domain"))?; let mut connection = rustls::ClientConnection::new( std::sync::Arc::new(config), - url.domain().unwrap_or("").try_into()?, + domain.try_into()?, )?; let mut stream = std::net::TcpStream::connect(format!( "{}:{}", - url.domain().unwrap_or(""), + domain, url.port().unwrap_or(1965) ))?; let mut tls = rustls::Stream::new(&mut connection, &mut stream); diff --git a/src/request/non_blocking.rs b/src/request/non_blocking.rs index 3bbcd95..85856e7 100644 --- a/src/request/non_blocking.rs +++ b/src/request/non_blocking.rs @@ -55,10 +55,16 @@ pub async fn request(url: &url::Url) -> anyhow::Result { .with_no_client_auth(), )) .connect( - rustls::ServerName::try_from(url.domain().unwrap_or_default())?, + rustls::ServerName::try_from( + url + .domain() + .ok_or_else(|| anyhow::anyhow!("Invalid URL: missing domain"))?, + )?, tokio::net::TcpStream::connect(format!( "{}:{}", - url.domain().unwrap_or(""), + url + .domain() + .ok_or_else(|| anyhow::anyhow!("Invalid URL: missing domain"))?, url.port().unwrap_or(1965) )) .await?, -- cgit v1.2.3