From 945dc7b84bc1a05f80b3b4e0b152be38d9f8a9bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 11 Sep 2019 23:34:22 +0200 Subject: fix: panic during fetch (#2925) --- cli/deno_error.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'cli/deno_error.rs') diff --git a/cli/deno_error.rs b/cli/deno_error.rs index 36d8b724a..71e5ac806 100644 --- a/cli/deno_error.rs +++ b/cli/deno_error.rs @@ -8,6 +8,7 @@ use deno::ErrBox; use deno::ModuleResolutionError; use http::uri; use hyper; +use reqwest; use rustyline::error::ReadlineError; use std; use std::error::Error; @@ -190,6 +191,26 @@ impl GetErrorKind for hyper::Error { } } +impl GetErrorKind for reqwest::Error { + fn kind(&self) -> ErrorKind { + use self::GetErrorKind as Get; + + match self.get_ref() { + Some(err_ref) => None + .or_else(|| err_ref.downcast_ref::().map(Get::kind)) + .or_else(|| err_ref.downcast_ref::().map(Get::kind)) + .or_else(|| err_ref.downcast_ref::().map(Get::kind)) + .or_else(|| { + err_ref + .downcast_ref::() + .map(Get::kind) + }) + .unwrap_or_else(|| ErrorKind::HttpOther), + _ => ErrorKind::HttpOther, + } + } +} + impl GetErrorKind for ReadlineError { fn kind(&self) -> ErrorKind { use ReadlineError::*; @@ -254,6 +275,7 @@ impl GetErrorKind for dyn AnyError { .or_else(|| self.downcast_ref::().map(Get::kind)) .or_else(|| self.downcast_ref::().map(Get::kind)) .or_else(|| self.downcast_ref::().map(Get::kind)) + .or_else(|| self.downcast_ref::().map(Get::kind)) .or_else(|| self.downcast_ref::().map(Get::kind)) .or_else(|| self.downcast_ref::().map(Get::kind)) .or_else(|| self.downcast_ref::().map(Get::kind)) -- cgit v1.2.3