From 165b413cf616533c6817dc9cf090d559e4e1dfe8 Mon Sep 17 00:00:00 2001 From: Alexandre Bury Date: Thu, 13 Apr 2017 10:08:45 -0700 Subject: Return unknown error when none is returned by last_error Fixes #60 --- src/error.rs | 5 +++++ src/util.rs | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/error.rs b/src/error.rs index 7019aa9..e402010 100644 --- a/src/error.rs +++ b/src/error.rs @@ -44,6 +44,11 @@ impl Error { Error::new(raw::LIBSSH2_ERROR_CHANNEL_EOF_SENT, "end of file") } + /// Generate an error for unknown failure + pub fn unknown() -> Error { + Error::new(libc::c_int::min_value(), "no other error listed") + } + /// Construct an error from an error code from libssh2 pub fn from_errno(code: libc::c_int) -> Error { let msg = match code { diff --git a/src/util.rs b/src/util.rs index 1955431..31637dc 100644 --- a/src/util.rs +++ b/src/util.rs @@ -20,7 +20,7 @@ pub trait SessionBinding<'sess>: Sized { unsafe fn from_raw_opt(sess: &'sess Session, raw: *mut Self::Raw) -> Result { if raw.is_null() { - Err(Error::last_error(sess).unwrap()) + Err(Error::last_error(sess).unwrap_or_else(Error::unknown)) } else { Ok(SessionBinding::from_raw(sess, raw)) } -- cgit v1.2.3