Loading ssl/error.rs +3 −2 Original line number Diff line number Diff line use std::libc::c_ulong; use std::io::IoError; use std::vec_ng::Vec; use ssl::ffi; Loading @@ -11,7 +12,7 @@ pub enum SslError { /// The SSL session has been closed by the other end SslSessionClosed, /// An error in the OpenSSL library OpenSslErrors(~[OpensslError]) OpenSslErrors(Vec<OpensslError>) } /// An error from the OpenSSL library Loading Loading @@ -44,7 +45,7 @@ impl SslError { /// Creates a new `OpenSslErrors` with the current contents of the error /// stack. pub fn get() -> SslError { let mut errs = ~[]; let mut errs = vec!(); loop { match unsafe { ffi::ERR_get_error() } { 0 => break, Loading ssl/mod.rs +8 −8 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ use std::libc::{c_int, c_void, c_char}; use std::ptr; use std::io::{IoResult, IoError, OtherIoError, Stream, Reader, Writer}; use std::unstable::mutex::NativeMutex; use std::vec; use std::vec_ng::Vec; use ssl::error::{SslError, SslSessionClosed, StreamError}; Loading @@ -14,7 +14,7 @@ mod ffi; mod tests; static mut VERIFY_IDX: c_int = -1; static mut MUTEXES: *mut ~[NativeMutex] = 0 as *mut ~[NativeMutex]; static mut MUTEXES: *mut Vec<NativeMutex> = 0 as *mut Vec<NativeMutex>; macro_rules! try_ssl( ($e:expr) => ( Loading @@ -37,7 +37,7 @@ fn init() { VERIFY_IDX = verify_idx; let num_locks = ffi::CRYPTO_num_locks(); let mutexes = ~vec::from_fn(num_locks as uint, |_| NativeMutex::new()); let mutexes = ~Vec::from_fn(num_locks as uint, |_| NativeMutex::new()); MUTEXES = cast::transmute(mutexes); ffi::CRYPTO_set_locking_callback(locking_function); Loading Loading @@ -90,7 +90,7 @@ pub enum SslVerifyMode { extern "C" fn locking_function(mode: c_int, n: c_int, _file: *c_char, _line: c_int) { unsafe { let mutex = &mut (*MUTEXES)[n as uint]; let mutex = (*MUTEXES).get_mut(n as uint); if mode & ffi::CRYPTO_LOCK != 0 { mutex.lock_noguard(); Loading Loading @@ -446,7 +446,7 @@ impl MemBio { pub struct SslStream<S> { priv stream: S, priv ssl: Ssl, priv buf: ~[u8] priv buf: Vec<u8> } impl<S: Stream> SslStream<S> { Loading @@ -462,7 +462,7 @@ impl<S: Stream> SslStream<S> { stream: stream, ssl: ssl, // Maximum TLS record size is 16k buf: vec::from_elem(16 * 1024, 0u8) buf: Vec::from_elem(16 * 1024, 0u8) }; match ssl.in_retry_wrapper(|ssl| { ssl.connect() }) { Loading Loading @@ -490,7 +490,7 @@ impl<S: Stream> SslStream<S> { match self.ssl.get_error(ret) { ErrorWantRead => { try_ssl!(self.flush()); let len = try_ssl!(self.stream.read(self.buf)); let len = try_ssl!(self.stream.read(self.buf.as_mut_slice())); self.ssl.get_rbio().write(self.buf.slice_to(len)); } ErrorWantWrite => { try_ssl!(self.flush()) } Loading @@ -503,7 +503,7 @@ impl<S: Stream> SslStream<S> { fn write_through(&mut self) -> IoResult<()> { loop { match self.ssl.get_wbio().read(self.buf) { match self.ssl.get_wbio().read(self.buf.as_mut_slice()) { Some(len) => try!(self.stream.write(self.buf.slice_to(len))), None => break }; Loading Loading
ssl/error.rs +3 −2 Original line number Diff line number Diff line use std::libc::c_ulong; use std::io::IoError; use std::vec_ng::Vec; use ssl::ffi; Loading @@ -11,7 +12,7 @@ pub enum SslError { /// The SSL session has been closed by the other end SslSessionClosed, /// An error in the OpenSSL library OpenSslErrors(~[OpensslError]) OpenSslErrors(Vec<OpensslError>) } /// An error from the OpenSSL library Loading Loading @@ -44,7 +45,7 @@ impl SslError { /// Creates a new `OpenSslErrors` with the current contents of the error /// stack. pub fn get() -> SslError { let mut errs = ~[]; let mut errs = vec!(); loop { match unsafe { ffi::ERR_get_error() } { 0 => break, Loading
ssl/mod.rs +8 −8 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ use std::libc::{c_int, c_void, c_char}; use std::ptr; use std::io::{IoResult, IoError, OtherIoError, Stream, Reader, Writer}; use std::unstable::mutex::NativeMutex; use std::vec; use std::vec_ng::Vec; use ssl::error::{SslError, SslSessionClosed, StreamError}; Loading @@ -14,7 +14,7 @@ mod ffi; mod tests; static mut VERIFY_IDX: c_int = -1; static mut MUTEXES: *mut ~[NativeMutex] = 0 as *mut ~[NativeMutex]; static mut MUTEXES: *mut Vec<NativeMutex> = 0 as *mut Vec<NativeMutex>; macro_rules! try_ssl( ($e:expr) => ( Loading @@ -37,7 +37,7 @@ fn init() { VERIFY_IDX = verify_idx; let num_locks = ffi::CRYPTO_num_locks(); let mutexes = ~vec::from_fn(num_locks as uint, |_| NativeMutex::new()); let mutexes = ~Vec::from_fn(num_locks as uint, |_| NativeMutex::new()); MUTEXES = cast::transmute(mutexes); ffi::CRYPTO_set_locking_callback(locking_function); Loading Loading @@ -90,7 +90,7 @@ pub enum SslVerifyMode { extern "C" fn locking_function(mode: c_int, n: c_int, _file: *c_char, _line: c_int) { unsafe { let mutex = &mut (*MUTEXES)[n as uint]; let mutex = (*MUTEXES).get_mut(n as uint); if mode & ffi::CRYPTO_LOCK != 0 { mutex.lock_noguard(); Loading Loading @@ -446,7 +446,7 @@ impl MemBio { pub struct SslStream<S> { priv stream: S, priv ssl: Ssl, priv buf: ~[u8] priv buf: Vec<u8> } impl<S: Stream> SslStream<S> { Loading @@ -462,7 +462,7 @@ impl<S: Stream> SslStream<S> { stream: stream, ssl: ssl, // Maximum TLS record size is 16k buf: vec::from_elem(16 * 1024, 0u8) buf: Vec::from_elem(16 * 1024, 0u8) }; match ssl.in_retry_wrapper(|ssl| { ssl.connect() }) { Loading Loading @@ -490,7 +490,7 @@ impl<S: Stream> SslStream<S> { match self.ssl.get_error(ret) { ErrorWantRead => { try_ssl!(self.flush()); let len = try_ssl!(self.stream.read(self.buf)); let len = try_ssl!(self.stream.read(self.buf.as_mut_slice())); self.ssl.get_rbio().write(self.buf.slice_to(len)); } ErrorWantWrite => { try_ssl!(self.flush()) } Loading @@ -503,7 +503,7 @@ impl<S: Stream> SslStream<S> { fn write_through(&mut self) -> IoResult<()> { loop { match self.ssl.get_wbio().read(self.buf) { match self.ssl.get_wbio().read(self.buf.as_mut_slice()) { Some(len) => try!(self.stream.write(self.buf.slice_to(len))), None => break }; Loading