Remove silly internal error enum

This commit is contained in:
Steven Fackler 2016-05-02 21:20:13 -07:00
parent 00f517d2cd
commit f1846bce78
1 changed files with 9 additions and 44 deletions

View File

@ -834,12 +834,8 @@ impl Ssl {
unsafe { ffi::SSL_write(self.ssl, buf.as_ptr() as *const c_void, len) } unsafe { ffi::SSL_write(self.ssl, buf.as_ptr() as *const c_void, len) }
} }
fn get_error(&self, ret: c_int) -> LibErrorStack { fn get_error(&self, ret: c_int) -> c_int {
let err = unsafe { ffi::SSL_get_error(self.ssl, ret) }; unsafe { ffi::SSL_get_error(self.ssl, ret) }
match LibErrorStack::from_i32(err as i32) {
Some(err) => err,
None => unreachable!(),
}
} }
/// Sets the verification mode to be used during the handshake process. /// Sets the verification mode to be used during the handshake process.
@ -1037,37 +1033,6 @@ impl Ssl {
} }
} }
macro_rules! make_LibErrorStack {
($($variant:ident = $value:ident),+) => {
#[derive(Debug)]
#[repr(i32)]
enum LibErrorStack {
$($variant = ffi::$value),+
}
impl LibErrorStack {
fn from_i32(val: i32) -> Option<LibErrorStack> {
match val {
$(ffi::$value => Some(LibErrorStack::$variant),)+
_ => None
}
}
}
}
}
make_LibErrorStack! {
ErrorNone = SSL_ERROR_NONE,
ErrorSsl = SSL_ERROR_SSL,
ErrorWantRead = SSL_ERROR_WANT_READ,
ErrorWantWrite = SSL_ERROR_WANT_WRITE,
ErrorWantX509Lookup = SSL_ERROR_WANT_X509_LOOKUP,
ErrorSyscall = SSL_ERROR_SYSCALL,
ErrorZeroReturn = SSL_ERROR_ZERO_RETURN,
ErrorWantConnect = SSL_ERROR_WANT_CONNECT,
ErrorWantAccept = SSL_ERROR_WANT_ACCEPT
}
/// A stream wrapper which handles SSL encryption for an underlying stream. /// A stream wrapper which handles SSL encryption for an underlying stream.
pub struct SslStream<S> { pub struct SslStream<S> {
ssl: Ssl, ssl: Ssl,
@ -1177,8 +1142,8 @@ impl<S> SslStream<S> {
self.check_panic(); self.check_panic();
match self.ssl.get_error(ret) { match self.ssl.get_error(ret) {
LibErrorStack::ErrorSsl => Error::Ssl(ErrorStack::get()), ffi::SSL_ERROR_SSL => Error::Ssl(ErrorStack::get()),
LibErrorStack::ErrorSyscall => { ffi::SSL_ERROR_SYSCALL => {
let errs = ErrorStack::get(); let errs = ErrorStack::get();
if errs.errors().is_empty() { if errs.errors().is_empty() {
if ret == 0 { if ret == 0 {
@ -1191,12 +1156,12 @@ impl<S> SslStream<S> {
Error::Ssl(errs) Error::Ssl(errs)
} }
} }
LibErrorStack::ErrorZeroReturn => Error::ZeroReturn, ffi::SSL_ERROR_ZERO_RETURN => Error::ZeroReturn,
LibErrorStack::ErrorWantWrite => Error::WantWrite(self.get_bio_error()), ffi::SSL_ERROR_WANT_WRITE => Error::WantWrite(self.get_bio_error()),
LibErrorStack::ErrorWantRead => Error::WantRead(self.get_bio_error()), ffi::SSL_ERROR_WANT_READ => Error::WantRead(self.get_bio_error()),
err => { err => {
Error::Stream(io::Error::new(io::ErrorKind::Other, Error::Stream(io::Error::new(io::ErrorKind::InvalidData,
format!("unexpected error {:?}", err))) format!("unexpected error {}", err)))
} }
} }
} }