Move HandshakeError to submodule
This commit is contained in:
parent
eea4e31a56
commit
bd457dba18
|
|
@ -1,8 +1,11 @@
|
||||||
|
use std::any::Any;
|
||||||
use std::error;
|
use std::error;
|
||||||
use std::error::Error as StdError;
|
use std::error::Error as StdError;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::io;
|
use std::io;
|
||||||
|
|
||||||
use error::ErrorStack;
|
use error::ErrorStack;
|
||||||
|
use ssl::MidHandshakeSslStream;
|
||||||
|
|
||||||
/// An SSL error.
|
/// An SSL error.
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|
@ -62,3 +65,55 @@ impl From<ErrorStack> for Error {
|
||||||
Error::Ssl(e)
|
Error::Ssl(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// An error or intermediate state after a TLS handshake attempt.
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum HandshakeError<S> {
|
||||||
|
/// Setup failed.
|
||||||
|
SetupFailure(ErrorStack),
|
||||||
|
/// The handshake failed.
|
||||||
|
Failure(MidHandshakeSslStream<S>),
|
||||||
|
/// The handshake was interrupted midway through.
|
||||||
|
Interrupted(MidHandshakeSslStream<S>),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<S: Any + fmt::Debug> StdError for HandshakeError<S> {
|
||||||
|
fn description(&self) -> &str {
|
||||||
|
match *self {
|
||||||
|
HandshakeError::SetupFailure(_) => "stream setup failed",
|
||||||
|
HandshakeError::Failure(_) => "the handshake failed",
|
||||||
|
HandshakeError::Interrupted(_) => "the handshake was interrupted",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn cause(&self) -> Option<&StdError> {
|
||||||
|
match *self {
|
||||||
|
HandshakeError::SetupFailure(ref e) => Some(e),
|
||||||
|
HandshakeError::Failure(ref s) |
|
||||||
|
HandshakeError::Interrupted(ref s) => Some(s.error()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<S: Any + fmt::Debug> fmt::Display for HandshakeError<S> {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
try!(f.write_str(StdError::description(self)));
|
||||||
|
match *self {
|
||||||
|
HandshakeError::SetupFailure(ref e) => try!(write!(f, ": {}", e)),
|
||||||
|
HandshakeError::Failure(ref s) |
|
||||||
|
HandshakeError::Interrupted(ref s) => {
|
||||||
|
try!(write!(f, ": {}", s.error()));
|
||||||
|
if let Some(err) = s.ssl().verify_result() {
|
||||||
|
try!(write!(f, ": {}", err));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<S> From<ErrorStack> for HandshakeError<S> {
|
||||||
|
fn from(e: ErrorStack) -> HandshakeError<S> {
|
||||||
|
HandshakeError::SetupFailure(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,6 @@ use std::any::Any;
|
||||||
use std::any::TypeId;
|
use std::any::TypeId;
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::error as stderror;
|
|
||||||
use std::ffi::{CStr, CString};
|
use std::ffi::{CStr, CString};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::io;
|
use std::io;
|
||||||
|
|
@ -99,7 +98,7 @@ use pkey::PKeyRef;
|
||||||
use error::ErrorStack;
|
use error::ErrorStack;
|
||||||
use opaque::Opaque;
|
use opaque::Opaque;
|
||||||
|
|
||||||
pub mod error;
|
mod error;
|
||||||
mod connector;
|
mod connector;
|
||||||
mod bio;
|
mod bio;
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
@ -109,8 +108,7 @@ use self::bio::BioMethod;
|
||||||
|
|
||||||
pub use ssl::connector::{ClientConnectorBuilder, ClientConnector, ServerConnectorBuilder,
|
pub use ssl::connector::{ClientConnectorBuilder, ClientConnector, ServerConnectorBuilder,
|
||||||
ServerConnector};
|
ServerConnector};
|
||||||
#[doc(inline)]
|
pub use ssl::error::{Error, HandshakeError};
|
||||||
pub use ssl::error::Error;
|
|
||||||
|
|
||||||
bitflags! {
|
bitflags! {
|
||||||
pub flags SslOptions: c_ulong {
|
pub flags SslOptions: c_ulong {
|
||||||
|
|
@ -1223,58 +1221,6 @@ impl Ssl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// An error or intermediate state after a TLS handshake attempt.
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub enum HandshakeError<S> {
|
|
||||||
/// Setup failed.
|
|
||||||
SetupFailure(ErrorStack),
|
|
||||||
/// The handshake failed.
|
|
||||||
Failure(MidHandshakeSslStream<S>),
|
|
||||||
/// The handshake was interrupted midway through.
|
|
||||||
Interrupted(MidHandshakeSslStream<S>),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<S: Any + fmt::Debug> stderror::Error for HandshakeError<S> {
|
|
||||||
fn description(&self) -> &str {
|
|
||||||
match *self {
|
|
||||||
HandshakeError::SetupFailure(_) => "stream setup failed",
|
|
||||||
HandshakeError::Failure(_) => "the handshake failed",
|
|
||||||
HandshakeError::Interrupted(_) => "the handshake was interrupted",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn cause(&self) -> Option<&stderror::Error> {
|
|
||||||
match *self {
|
|
||||||
HandshakeError::SetupFailure(ref e) => Some(e),
|
|
||||||
HandshakeError::Failure(ref s) |
|
|
||||||
HandshakeError::Interrupted(ref s) => Some(s.error()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<S: Any + fmt::Debug> fmt::Display for HandshakeError<S> {
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
||||||
try!(f.write_str(stderror::Error::description(self)));
|
|
||||||
match *self {
|
|
||||||
HandshakeError::SetupFailure(ref e) => try!(write!(f, ": {}", e)),
|
|
||||||
HandshakeError::Failure(ref s) |
|
|
||||||
HandshakeError::Interrupted(ref s) => {
|
|
||||||
try!(write!(f, ": {}", s.error()));
|
|
||||||
if let Some(err) = s.ssl().verify_result() {
|
|
||||||
try!(write!(f, ": {}", err));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<S> From<ErrorStack> for HandshakeError<S> {
|
|
||||||
fn from(e: ErrorStack) -> HandshakeError<S> {
|
|
||||||
HandshakeError::SetupFailure(e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// An SSL stream midway through the handshake process.
|
/// An SSL stream midway through the handshake process.
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct MidHandshakeSslStream<S> {
|
pub struct MidHandshakeSslStream<S> {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue