diff --git a/Cargo.toml b/Cargo.toml index 9302dfa3..34aa3d3c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "shadowsocks-rust" -version = "0.9.9" +version = "0.9.10" authors = ["Y. T. CHUNG "] [lib] diff --git a/src/crypto/openssl.rs b/src/crypto/openssl.rs index 6169974b..180d8b5f 100644 --- a/src/crypto/openssl.rs +++ b/src/crypto/openssl.rs @@ -218,7 +218,6 @@ impl Clone for OpenSSLDigest { } } -#[unsafe_destructor] impl Drop for OpenSSLDigest { fn drop(&mut self) { unsafe { @@ -403,7 +402,6 @@ impl Clone for OpenSSLCrypto { } -#[unsafe_destructor] impl Drop for OpenSSLCrypto { fn drop(&mut self) { unsafe { diff --git a/src/lib.rs b/src/lib.rs index 0f6498b8..09e204e8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,7 +22,7 @@ #![crate_type = "lib"] #![crate_name = "shadowsocks"] -#![feature(unsafe_destructor, box_syntax, libc, core, tcp, collections, test, slice_patterns, lookup_host, convert, scoped)] +#![feature(box_syntax, libc, core, tcp, collections, test, slice_patterns, lookup_host, convert, buf_stream)] extern crate rustc_serialize as serialize; #[macro_use] diff --git a/src/relay/local.rs b/src/relay/local.rs index 6ec3b730..ed9d31d3 100644 --- a/src/relay/local.rs +++ b/src/relay/local.rs @@ -90,12 +90,10 @@ impl Relay for RelayLocal { warn!("UDP relay feature is disabled, recompile with feature=\"enable-udp\" to enable this feature"); } let tcprelay = self.tcprelay.clone(); - let tcp_thread = thread::scoped(move || tcprelay.run()); + let tcp_thread = thread::spawn(move || tcprelay.run()); info!("Enabled TCP relay"); - tcp_thread.join(); - - panic!("Exit!!"); + tcp_thread.join().unwrap(); } #[cfg(feature = "enable-udp")] @@ -103,21 +101,19 @@ impl Relay for RelayLocal { let mut threads = Vec::with_capacity(2); let tcprelay = self.tcprelay.clone(); - let tcp_thread = thread::scoped(move || tcprelay.run()); + let tcp_thread = thread::spawn(move || tcprelay.run()); threads.push(tcp_thread); info!("Enabled TCP relay"); if self.enable_udp { let udprelay = self.udprelay.clone(); - let udp_thread = thread::scoped(move || udprelay.run()); + let udp_thread = thread::spawn(move || udprelay.run()); threads.push(udp_thread); info!("Enabled UDP relay"); } for fut in threads.into_iter() { - fut.join(); + fut.join().unwrap(); } - - panic!("Exit!!"); } } diff --git a/src/relay/server.rs b/src/relay/server.rs index ddd1bc73..eb388b18 100644 --- a/src/relay/server.rs +++ b/src/relay/server.rs @@ -89,18 +89,18 @@ impl Relay for RelayServer { let mut threads = Vec::with_capacity(2); let tcprelay = self.tcprelay.clone(); - threads.push(thread::scoped(move || tcprelay.run())); + threads.push(thread::spawn(move || tcprelay.run())); info!("Enabled TCP relay"); if self.enable_udp { let udprelay = self.udprelay.clone(); - let udp_thread = thread::scoped(move || udprelay.run()); + let udp_thread = thread::spawn(move || udprelay.run()); threads.push(udp_thread); info!("Enabled UDP relay"); } for fut in threads.into_iter() { - fut.join(); + fut.join().unwrap(); } } @@ -111,9 +111,9 @@ impl Relay for RelayServer { } let tcprelay = self.tcprelay.clone(); - let tcp_thread = thread::scoped(move || tcprelay.run()); + let tcp_thread = thread::spawn(move || tcprelay.run()); info!("Enabled TCP relay"); - tcp_thread.join(); + tcp_thread.join().unwrap(); } } diff --git a/src/relay/tcprelay/server.rs b/src/relay/tcprelay/server.rs index 18cb7c1f..73b2222c 100644 --- a/src/relay/tcprelay/server.rs +++ b/src/relay/tcprelay/server.rs @@ -167,14 +167,14 @@ impl Relay for TcpRelayServer { let mut threads = Vec::new(); for s in self.config.server.iter() { let s = s.clone(); - let fut = thread::Builder::new().name(format!("TCP relay of `{}:{}`", s.addr, s.port)).scoped(move || { + let fut = thread::Builder::new().name(format!("TCP relay of `{}:{}`", s.addr, s.port)).spawn(move || { TcpRelayServer::accept_loop(s); }).unwrap(); threads.push(fut); } for fut in threads.into_iter() { - fut.join(); + fut.join().unwrap(); } } } diff --git a/src/relay/tcprelay/stream.rs b/src/relay/tcprelay/stream.rs index e09206cb..3d8daa37 100644 --- a/src/relay/tcprelay/stream.rs +++ b/src/relay/tcprelay/stream.rs @@ -193,7 +193,6 @@ impl Write for EncryptedWriter { } } -#[unsafe_destructor] impl Drop for EncryptedWriter { fn drop(&mut self) { self.finalize().unwrap() diff --git a/src/relay/udprelay/server.rs b/src/relay/udprelay/server.rs index 94ad92c7..c20fc093 100644 --- a/src/relay/udprelay/server.rs +++ b/src/relay/udprelay/server.rs @@ -183,12 +183,12 @@ impl Relay for UdpRelayServer { let mut threads = Vec::new(); for s in self.config.server.iter() { let s = s.clone(); - let fut = thread::scoped(move || UdpRelayServer::accept_loop(s)); + let fut = thread::spawn(move || UdpRelayServer::accept_loop(s)); threads.push(fut); } for fut in threads.into_iter() { - fut.join(); + fut.join().unwrap(); } } }