diff options
| author | Steven Fackler <[email protected]> | 2015-02-16 22:21:13 -0800 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2015-02-16 22:21:13 -0800 |
| commit | f0eb8e39e3af70c7e0322f0d698f6714ad723c62 (patch) | |
| tree | 28b265bf1ea4cda743d389302a72399950ffb5a9 /openssl/src/ssl/mod.rs | |
| parent | Release v0.4.0 (diff) | |
| download | rust-openssl-f0eb8e39e3af70c7e0322f0d698f6714ad723c62.tar.xz rust-openssl-f0eb8e39e3af70c7e0322f0d698f6714ad723c62.zip | |
Deal with openssl errors in read
I'm not sure of a great way to generate this case in a test,
unfortunately.
Closes #157
Diffstat (limited to 'openssl/src/ssl/mod.rs')
| -rw-r--r-- | openssl/src/ssl/mod.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/openssl/src/ssl/mod.rs b/openssl/src/ssl/mod.rs index c9d46ffc..0c698f54 100644 --- a/openssl/src/ssl/mod.rs +++ b/openssl/src/ssl/mod.rs @@ -1,6 +1,6 @@ use libc::{c_int, c_void, c_long}; use std::ffi::{CString, c_str_to_bytes}; -use std::old_io::{IoResult, IoError, EndOfFile, Stream, Reader, Writer}; +use std::old_io::{IoResult, IoError, EndOfFile, OtherIoError, Stream, Reader, Writer}; use std::mem; use std::fmt; use std::num::FromPrimitive; @@ -9,7 +9,7 @@ use std::sync::{Once, ONCE_INIT, Arc}; use bio::{MemBio}; use ffi; -use ssl::error::{SslError, SslSessionClosed, StreamError}; +use ssl::error::{SslError, SslSessionClosed, StreamError, OpenSslErrors}; use x509::{X509StoreContext, X509FileType, X509}; pub mod error; @@ -559,7 +559,13 @@ impl<S: Stream> Reader for SslStream<S> { detail: None }), Err(StreamError(e)) => Err(e), - _ => unreachable!() + Err(e @ OpenSslErrors(_)) => { + Err(IoError { + kind: OtherIoError, + desc: "SSL error", + detail: Some(format!("{}", e)), + }) + } } } } |