aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2016-10-30 17:18:37 -0700
committerSteven Fackler <[email protected]>2016-10-30 17:23:03 -0700
commitbd457dba1860576f2308414daaafc3dc5b22f420 (patch)
tree1359cdcd2b757ca3ea166bec6bad2ac63645cc74 /openssl/src
parentMerge pull request #505 from sfackler/more-refs (diff)
downloadrust-openssl-bd457dba1860576f2308414daaafc3dc5b22f420.tar.xz
rust-openssl-bd457dba1860576f2308414daaafc3dc5b22f420.zip
Move HandshakeError to submodule
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/ssl/error.rs55
-rw-r--r--openssl/src/ssl/mod.rs58
2 files changed, 57 insertions, 56 deletions
diff --git a/openssl/src/ssl/error.rs b/openssl/src/ssl/error.rs
index 95213361..518ae90f 100644
--- a/openssl/src/ssl/error.rs
+++ b/openssl/src/ssl/error.rs
@@ -1,8 +1,11 @@
+use std::any::Any;
use std::error;
use std::error::Error as StdError;
use std::fmt;
use std::io;
+
use error::ErrorStack;
+use ssl::MidHandshakeSslStream;
/// An SSL error.
#[derive(Debug)]
@@ -62,3 +65,55 @@ impl From<ErrorStack> for Error {
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)
+ }
+}
diff --git a/openssl/src/ssl/mod.rs b/openssl/src/ssl/mod.rs
index c1630996..71127138 100644
--- a/openssl/src/ssl/mod.rs
+++ b/openssl/src/ssl/mod.rs
@@ -73,7 +73,6 @@ use std::any::Any;
use std::any::TypeId;
use std::cmp;
use std::collections::HashMap;
-use std::error as stderror;
use std::ffi::{CStr, CString};
use std::fmt;
use std::io;
@@ -99,7 +98,7 @@ use pkey::PKeyRef;
use error::ErrorStack;
use opaque::Opaque;
-pub mod error;
+mod error;
mod connector;
mod bio;
#[cfg(test)]
@@ -109,8 +108,7 @@ use self::bio::BioMethod;
pub use ssl::connector::{ClientConnectorBuilder, ClientConnector, ServerConnectorBuilder,
ServerConnector};
-#[doc(inline)]
-pub use ssl::error::Error;
+pub use ssl::error::{Error, HandshakeError};
bitflags! {
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.
#[derive(Debug)]
pub struct MidHandshakeSslStream<S> {