diff --git a/lib/src/error.rs b/lib/src/error.rs index 4d6b8be2..fbdcfd7e 100644 --- a/lib/src/error.rs +++ b/lib/src/error.rs @@ -1,5 +1,7 @@ //! Error types. +use std::error::Error as StdError; +use std::io; use {crate::wiggle_abi::types::FastlyStatus, url::Url, wiggle::GuestError}; #[derive(Debug, thiserror::Error)] @@ -154,6 +156,14 @@ impl Error { Error::HyperError(e) if e.is_parse() => FastlyStatus::Httpinvalid, Error::HyperError(e) if e.is_user() => FastlyStatus::Httpuser, Error::HyperError(e) if e.is_incomplete_message() => FastlyStatus::Httpincomplete, + Error::HyperError(e) + if e.source() + .and_then(|e| e.downcast_ref::()) + .map(|ioe| ioe.kind()) + == Some(io::ErrorKind::UnexpectedEof) => + { + FastlyStatus::Httpincomplete + } Error::HyperError(_) => FastlyStatus::Error, // Destructuring a GuestError is recursive, so we use a helper function: Error::GuestError(e) => Self::guest_error_fastly_status(e),