Loading ssl/mod.rs +22 −21 Original line number Diff line number Diff line use std::cast; use std::libc::{c_int, c_void, c_char}; use std::ptr; use std::task; use std::sync::atomics::{AtomicBool, INIT_ATOMIC_BOOL, AtomicUint, INIT_ATOMIC_UINT, Acquire, Release, SeqCst}; use std::unstable::mutex::Mutex; use std::sync::atomics::{AtomicUint, INIT_ATOMIC_UINT, Acquire, Release, SeqCst}; use std::unstable::finally::Finally; use std::unstable::mutex::{Mutex, MUTEX_INIT}; use std::io::{Stream, Reader, Writer, Decorator}; use std::vec; Loading @@ -15,8 +14,8 @@ mod ffi; #[cfg(test)] mod tests; static mut STARTED_INIT: AtomicBool = INIT_ATOMIC_BOOL; static mut FINISHED_INIT: AtomicBool = INIT_ATOMIC_BOOL; static mut INIT_LOCK: Mutex = MUTEX_INIT; static mut INITIALIZED: bool = false; static mut VERIFY_IDX: AtomicUint = INIT_ATOMIC_UINT; Loading @@ -25,10 +24,9 @@ static mut MUTEXES: AtomicUint = INIT_ATOMIC_UINT; fn init() { unsafe { if STARTED_INIT.swap(true, Acquire) { while !FINISHED_INIT.load(Release) { task::deschedule(); } INIT_LOCK.lock(); (|| { if INITIALIZED { return; } Loading @@ -44,7 +42,10 @@ fn init() { ffi::CRYPTO_set_locking_callback(locking_function); FINISHED_INIT.store(true, Release); INITIALIZED = true; }).finally(|| { INIT_LOCK.unlock(); }) } } Loading Loading
ssl/mod.rs +22 −21 Original line number Diff line number Diff line use std::cast; use std::libc::{c_int, c_void, c_char}; use std::ptr; use std::task; use std::sync::atomics::{AtomicBool, INIT_ATOMIC_BOOL, AtomicUint, INIT_ATOMIC_UINT, Acquire, Release, SeqCst}; use std::unstable::mutex::Mutex; use std::sync::atomics::{AtomicUint, INIT_ATOMIC_UINT, Acquire, Release, SeqCst}; use std::unstable::finally::Finally; use std::unstable::mutex::{Mutex, MUTEX_INIT}; use std::io::{Stream, Reader, Writer, Decorator}; use std::vec; Loading @@ -15,8 +14,8 @@ mod ffi; #[cfg(test)] mod tests; static mut STARTED_INIT: AtomicBool = INIT_ATOMIC_BOOL; static mut FINISHED_INIT: AtomicBool = INIT_ATOMIC_BOOL; static mut INIT_LOCK: Mutex = MUTEX_INIT; static mut INITIALIZED: bool = false; static mut VERIFY_IDX: AtomicUint = INIT_ATOMIC_UINT; Loading @@ -25,10 +24,9 @@ static mut MUTEXES: AtomicUint = INIT_ATOMIC_UINT; fn init() { unsafe { if STARTED_INIT.swap(true, Acquire) { while !FINISHED_INIT.load(Release) { task::deschedule(); } INIT_LOCK.lock(); (|| { if INITIALIZED { return; } Loading @@ -44,7 +42,10 @@ fn init() { ffi::CRYPTO_set_locking_callback(locking_function); FINISHED_INIT.store(true, Release); INITIALIZED = true; }).finally(|| { INIT_LOCK.unlock(); }) } } Loading