From 4e4c96bf66111c6e8ba976ed24594edf7abfcbfb Mon Sep 17 00:00:00 2001 From: Yusuke Tanaka Date: Thu, 8 Aug 2024 15:18:33 +0900 Subject: fix(ext/fetch): include URL and error details on fetch failures (#24910) This commit improves error messages that `fetch` generates on failure. Fixes #24835 --- cli/http_util.rs | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'cli') diff --git a/cli/http_util.rs b/cli/http_util.rs index b47e91c70..9ec90dd61 100644 --- a/cli/http_util.rs +++ b/cli/http_util.rs @@ -390,10 +390,10 @@ impl HttpClient { let response = match self.client.clone().send(request).await { Ok(resp) => resp, Err(err) => { - if is_error_connect(&err) { + if err.is_connect_error() { return Ok(FetchOnceResult::RequestError(err.to_string())); } - return Err(err); + return Err(err.into()); } }; @@ -531,7 +531,7 @@ impl HttpClient { .clone() .send(req) .await - .map_err(DownloadError::Fetch)?; + .map_err(|e| DownloadError::Fetch(e.into()))?; let status = response.status(); if status.is_redirection() { for _ in 0..5 { @@ -551,7 +551,7 @@ impl HttpClient { .clone() .send(req) .await - .map_err(DownloadError::Fetch)?; + .map_err(|e| DownloadError::Fetch(e.into()))?; let status = new_response.status(); if status.is_redirection() { response = new_response; @@ -567,13 +567,6 @@ impl HttpClient { } } -fn is_error_connect(err: &AnyError) -> bool { - err - .downcast_ref::() - .map(|err| err.is_connect()) - .unwrap_or(false) -} - async fn get_response_body_with_progress( response: http::Response, progress_guard: Option<&UpdateGuard>, @@ -685,7 +678,7 @@ impl RequestBuilder { pub async fn send( self, ) -> Result, AnyError> { - self.client.send(self.req).await + self.client.send(self.req).await.map_err(Into::into) } pub fn build(self) -> http::Request { -- cgit v1.2.3