diff --git a/Cargo.toml b/Cargo.toml index f2ede401..0761535a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -107,7 +107,7 @@ snmalloc = ["snmalloc-rs"] multi-threaded = ["tokio/rt-multi-thread"] # Enable Stream Cipher Protocol -# WARN: Stream Cipher Protocol is proved to be insecured +# WARN: Stream Cipher Protocol is proved to be insecure # https://github.com/shadowsocks/shadowsocks-rust/issues/373 # Users should always avoid using these ciphers in practice stream-cipher = ["shadowsocks-service/stream-cipher"] diff --git a/README.md b/README.md index 184a59fe..d1be183e 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Install from [crates.io](https://crates.io/crates/shadowsocks-rust): ```bash # Set default toolchain to nightly rustup default nightly -# RECOMMEND: Check the rust-toolchain file in the project root and use the recomended nightly version +# RECOMMEND: Check the rust-toolchain file in the project root and use the recommended nightly version # For example: # rustup default nightly-2021-06-03 diff --git a/bin/common/mod.rs b/bin/common/mod.rs index bece21d7..0fc30f50 100644 --- a/bin/common/mod.rs +++ b/bin/common/mod.rs @@ -8,7 +8,7 @@ pub mod logging; pub mod monitor; pub mod validator; -pub const EXIT_CODE_SERVER_EXIT_UNEXPECTLY: i32 = exitcode::SOFTWARE; +pub const EXIT_CODE_SERVER_EXIT_UNEXPECTEDLY: i32 = exitcode::SOFTWARE; pub const EXIT_CODE_SERVER_ABORTED: i32 = exitcode::SOFTWARE; pub const EXIT_CODE_LOAD_CONFIG_FAILURE: i32 = exitcode::CONFIG; pub const EXIT_CODE_LOAD_ACL_FAILURE: i32 = exitcode::CONFIG; diff --git a/bin/sslocal.rs b/bin/sslocal.rs index b63b79b6..086d8310 100644 --- a/bin/sslocal.rs +++ b/bin/sslocal.rs @@ -533,8 +533,8 @@ fn main() { match future::select(server, abort_signal).await { // Server future resolved without an error. This should never happen. Either::Left((Ok(..), ..)) => { - eprintln!("server exited unexpectly"); - process::exit(common::EXIT_CODE_SERVER_EXIT_UNEXPECTLY); + eprintln!("server exited unexpectedly"); + process::exit(common::EXIT_CODE_SERVER_EXIT_UNEXPECTEDLY); } // Server future resolved with error, which are listener errors in most cases Either::Left((Err(err), ..)) => { diff --git a/bin/ssmanager.rs b/bin/ssmanager.rs index d637d029..0cb65b75 100644 --- a/bin/ssmanager.rs +++ b/bin/ssmanager.rs @@ -4,7 +4,7 @@ //! or you could specify a configuration file. The format of configuration file is defined //! in mod `config`. //! -//! *It should be notice that the extented configuration file is not suitable for the server +//! *It should be notice that the extended configuration file is not suitable for the server //! side.* use std::{net::IpAddr, process, time::Duration}; @@ -330,8 +330,8 @@ fn main() { match future::select(server, abort_signal).await { // Server future resolved without an error. This should never happen. Either::Left((Ok(..), ..)) => { - eprintln!("server exited unexpectly"); - process::exit(common::EXIT_CODE_SERVER_EXIT_UNEXPECTLY); + eprintln!("server exited unexpectedly"); + process::exit(common::EXIT_CODE_SERVER_EXIT_UNEXPECTEDLY); } // Server future resolved with error, which are listener errors in most cases Either::Left((Err(err), ..)) => { diff --git a/bin/ssserver.rs b/bin/ssserver.rs index 4663d90e..e12002ec 100644 --- a/bin/ssserver.rs +++ b/bin/ssserver.rs @@ -4,7 +4,7 @@ //! or you could specify a configuration file. The format of configuration file is defined //! in mod `config`. //! -//! *It should be notice that the extented configuration file is not suitable for the server +//! *It should be notice that the extended configuration file is not suitable for the server //! side.* use std::{net::IpAddr, process, time::Duration}; @@ -314,8 +314,8 @@ fn main() { match future::select(server, abort_signal).await { // Server future resolved without an error. This should never happen. Either::Left((Ok(..), ..)) => { - eprintln!("server exited unexpectly"); - process::exit(common::EXIT_CODE_SERVER_EXIT_UNEXPECTLY); + eprintln!("server exited unexpectedly"); + process::exit(common::EXIT_CODE_SERVER_EXIT_UNEXPECTEDLY); } // Server future resolved with error, which are listener errors in most cases Either::Left((Err(err), ..)) => { diff --git a/configs/genipset.py b/configs/genipset.py index 4c66a268..7081b082 100644 --- a/configs/genipset.py +++ b/configs/genipset.py @@ -41,7 +41,7 @@ def generate_ipset(content, name, location_set, type_set, output_file): ''' In the case of IPv4 address the count of hosts for this range. This count does not have to represent a CIDR range. - But. It seems that it is always a CIDR range in this paticalur file. + But. It seems that it is always a CIDR range in this particular file. ''' mask = cidr_trans[int(value)] output_file.write( diff --git a/crates/shadowsocks-service/Cargo.toml b/crates/shadowsocks-service/Cargo.toml index a26fc139..3b51c11d 100644 --- a/crates/shadowsocks-service/Cargo.toml +++ b/crates/shadowsocks-service/Cargo.toml @@ -59,7 +59,7 @@ local-socks4 = ["local"] local-tun = ["local", "etherparse", "tun", "rand"] # Enable Stream Cipher Protocol -# WARN: Stream Cipher Protocol is proved to be insecured +# WARN: Stream Cipher Protocol is proved to be insecure # https://github.com/shadowsocks/shadowsocks-rust/issues/373 # Users should always avoid using these ciphers in practice stream-cipher = ["shadowsocks/stream-cipher"] diff --git a/crates/shadowsocks-service/src/acl/mod.rs b/crates/shadowsocks-service/src/acl/mod.rs index 85389490..c14cbf59 100644 --- a/crates/shadowsocks-service/src/acl/mod.rs +++ b/crates/shadowsocks-service/src/acl/mod.rs @@ -412,7 +412,7 @@ impl AccessControl { /// Default mode /// - /// Default behavor for hosts that are not configured + /// Default behavior for hosts that are not configured /// - `true` - Proxied /// - `false` - Bypassed pub fn is_default_in_proxy_list(&self) -> bool { diff --git a/crates/shadowsocks-service/src/local/dns/upstream.rs b/crates/shadowsocks-service/src/local/dns/upstream.rs index e8e86427..1228defb 100644 --- a/crates/shadowsocks-service/src/local/dns/upstream.rs +++ b/crates/shadowsocks-service/src/local/dns/upstream.rs @@ -213,7 +213,7 @@ impl DnsClient { Ordering::Less => { let err = io::Error::last_os_error(); // I have to trust the `s` have already set to non-blocking mode - // Becuase windows doesn't have MSG_DONTWAIT + // Because windows doesn't have MSG_DONTWAIT err.kind() == ErrorKind::WouldBlock } } diff --git a/crates/shadowsocks-service/src/local/http/dispatcher.rs b/crates/shadowsocks-service/src/local/http/dispatcher.rs index 0d04f910..280031b9 100644 --- a/crates/shadowsocks-service/src/local/http/dispatcher.rs +++ b/crates/shadowsocks-service/src/local/http/dispatcher.rs @@ -233,7 +233,7 @@ fn check_keep_alive(version: Version, headers: &HeaderMap, check_pr let mut conn_keep_alive = !matches!(version, Version::HTTP_09 | Version::HTTP_10); if check_proxy { - // Modern browers will send Proxy-Connection instead of Connection + // Modern browsers will send Proxy-Connection instead of Connection // for HTTP/1.0 proxies which blindly forward Connection to remote // // https://tools.ietf.org/html/rfc7230#appendix-A.1.2 diff --git a/crates/shadowsocks-service/src/local/http/http_stream.rs b/crates/shadowsocks-service/src/local/http/http_stream.rs index 2353dddb..7c072ccf 100644 --- a/crates/shadowsocks-service/src/local/http/http_stream.rs +++ b/crates/shadowsocks-service/src/local/http/http_stream.rs @@ -41,16 +41,16 @@ impl ProxyHttpStream { match cx.connect(domain, stream).await { Ok(s) => { - let negociated_h2 = match s.get_ref().negotiated_alpn() { + let negotiated_h2 = match s.get_ref().negotiated_alpn() { Ok(Some(alpn)) => alpn == b"h2", Ok(None) => false, Err(err) => { - let ierr = io::Error::new(ErrorKind::Other, format!("tls alpn negociate: {}", err)); + let ierr = io::Error::new(ErrorKind::Other, format!("tls alpn negotiate: {}", err)); return Err(ierr); } }; - Ok(ProxyHttpStream::Https(s, negociated_h2)) + Ok(ProxyHttpStream::Https(s, negotiated_h2)) } Err(err) => { let ierr = io::Error::new(ErrorKind::Other, format!("tls connect: {}", err)); @@ -106,7 +106,7 @@ impl ProxyHttpStream { }) .with_no_client_auth(); - // Try to negociate HTTP/2 + // Try to negotiate HTTP/2 config.alpn_protocols = vec![b"h2".to_vec(), b"http/1.1".to_vec()]; Arc::new(config) }); @@ -126,9 +126,9 @@ impl ProxyHttpStream { let tls_stream = connector.connect(host, stream).await?; let (_, session) = tls_stream.get_ref(); - let negociated_http2 = matches!(session.alpn_protocol(), Some(b"h2")); + let negotiated_http2 = matches!(session.alpn_protocol(), Some(b"h2")); - Ok(ProxyHttpStream::Https(tls_stream, negociated_http2)) + Ok(ProxyHttpStream::Https(tls_stream, negotiated_http2)) } #[cfg(not(any(feature = "local-http-native-tls", feature = "local-http-rustls")))] @@ -140,7 +140,7 @@ impl ProxyHttpStream { Err(err) } - pub fn negociated_http2(&self) -> bool { + pub fn negotiated_http2(&self) -> bool { match *self { ProxyHttpStream::Http(..) => false, #[cfg(any(feature = "local-http-native-tls", feature = "local-http-rustls"))] @@ -182,7 +182,7 @@ impl AsyncWrite for ProxyHttpStream { impl Connection for ProxyHttpStream { fn connected(&self) -> Connected { let conn = Connected::new(); - if self.negociated_http2() { + if self.negotiated_http2() { conn.negotiated_h2() } else { conn diff --git a/crates/shadowsocks-service/src/local/net/udp/association.rs b/crates/shadowsocks-service/src/local/net/udp/association.rs index 50584dff..fa8b423c 100644 --- a/crates/shadowsocks-service/src/local/net/udp/association.rs +++ b/crates/shadowsocks-service/src/local/net/udp/association.rs @@ -35,7 +35,7 @@ use crate::{ /// Writer for sending packets back to client /// /// Currently it requires `async-trait` for `async fn` in trait, which will allocate a `Box`ed `Future` every call of `send_to`. -/// This performance issue could be solved when `generic_associated_types` and `generic_associated_types` are stablized. +/// This performance issue could be solved when `generic_associated_types` and `generic_associated_types` are stabilized. #[async_trait] pub trait UdpInboundWrite { /// Sends packet `data` received from `remote_addr` back to `peer_addr` @@ -299,7 +299,7 @@ where respond_writer: W, ) -> (Arc>, mpsc::Sender<(Address, Bytes)>) { // Pending packets 1024 should be good enough for a server. - // If there are plenty of packets stuck in the channel, dropping exccess packets is a good way to protect the server from + // If there are plenty of packets stuck in the channel, dropping excessive packets is a good way to protect the server from // being OOM. let (sender, receiver) = mpsc::channel(1024); diff --git a/crates/shadowsocks-service/src/local/redir/server.rs b/crates/shadowsocks-service/src/local/redir/server.rs index 34fa1260..e087a215 100644 --- a/crates/shadowsocks-service/src/local/redir/server.rs +++ b/crates/shadowsocks-service/src/local/redir/server.rs @@ -52,7 +52,7 @@ impl Redir { self.udp_expiry_duration = Some(d); } - /// Set total UDP association to be kept simutaneously in server + /// Set total UDP association to be kept simultaneouslyin server pub fn set_udp_capacity(&mut self, c: usize) { self.udp_capacity = Some(c); } diff --git a/crates/shadowsocks-service/src/local/socks/server/mod.rs b/crates/shadowsocks-service/src/local/socks/server/mod.rs index cad8cb33..d929c474 100644 --- a/crates/shadowsocks-service/src/local/socks/server/mod.rs +++ b/crates/shadowsocks-service/src/local/socks/server/mod.rs @@ -60,7 +60,7 @@ impl Socks { self.udp_expiry_duration = Some(d); } - /// Set total UDP association to be kept simutaneously in server + /// Set total UDP association to be kept simultaneouslyin server pub fn set_udp_capacity(&mut self, c: usize) { self.udp_capacity = Some(c); } diff --git a/crates/shadowsocks-service/src/local/socks/server/socks5/udprelay.rs b/crates/shadowsocks-service/src/local/socks/server/socks5/udprelay.rs index 5ff9e7e8..72197f78 100644 --- a/crates/shadowsocks-service/src/local/socks/server/socks5/udprelay.rs +++ b/crates/shadowsocks-service/src/local/socks/server/socks5/udprelay.rs @@ -36,7 +36,7 @@ struct Socks5UdpInboundWriter { #[async_trait] impl UdpInboundWrite for Socks5UdpInboundWriter { async fn send_to(&self, peer_addr: SocketAddr, remote_addr: &Address, data: &[u8]) -> io::Result<()> { - // Resssemble packet + // Reassemble packet let mut payload_buffer = BytesMut::new(); let header = UdpAssociateHeader::new(0, remote_addr.clone()); payload_buffer.reserve(header.serialized_len() + data.len()); diff --git a/crates/shadowsocks-service/src/local/socks/socks4.rs b/crates/shadowsocks-service/src/local/socks/socks4.rs index e336df4c..01c85678 100644 --- a/crates/shadowsocks-service/src/local/socks/socks4.rs +++ b/crates/shadowsocks-service/src/local/socks/socks4.rs @@ -65,7 +65,7 @@ pub enum ResultCode { RequestGranted, /// 91: request rejected or failed RequestRejectedOrFailed, - /// 92: request rejected becasue SOCKS server cannot connect to identd on the client + /// 92: request rejected because SOCKS server cannot connect to identd on the client RequestRejectedCannotConnect, /// 93: request rejected because the client program and identd report different user-ids RequestRejectedDifferentUserId, diff --git a/crates/shadowsocks-service/src/local/tun/udp.rs b/crates/shadowsocks-service/src/local/tun/udp.rs index 1b6b93fd..171c3e83 100644 --- a/crates/shadowsocks-service/src/local/tun/udp.rs +++ b/crates/shadowsocks-service/src/local/tun/udp.rs @@ -58,7 +58,7 @@ impl UdpTun { pub async fn recv_packet(&mut self) -> BytesMut { match self.tun_rx.recv().await { Some(b) => b, - None => unreachable!("channel closed unexpectly"), + None => unreachable!("channel closed unexpectedly"), } } } diff --git a/crates/shadowsocks-service/src/local/tunnel/server.rs b/crates/shadowsocks-service/src/local/tunnel/server.rs index d44e122e..ce01aac8 100644 --- a/crates/shadowsocks-service/src/local/tunnel/server.rs +++ b/crates/shadowsocks-service/src/local/tunnel/server.rs @@ -41,7 +41,7 @@ impl Tunnel { self.udp_expiry_duration = Some(d); } - /// Set total UDP association to be kept simutaneously in server + /// Set total UDP association to be kept simultaneouslyin server pub fn set_udp_capacity(&mut self, c: usize) { self.udp_capacity = Some(c); } diff --git a/crates/shadowsocks-service/src/local/tunnel/udprelay.rs b/crates/shadowsocks-service/src/local/tunnel/udprelay.rs index 976e7e53..0eba2f7e 100644 --- a/crates/shadowsocks-service/src/local/tunnel/udprelay.rs +++ b/crates/shadowsocks-service/src/local/tunnel/udprelay.rs @@ -268,7 +268,7 @@ impl UdpAssociationContext { balancer: PingBalancer, ) -> (Arc, mpsc::Sender) { // Pending packets 1024 should be good enough for a server. - // If there are plenty of packets stuck in the channel, dropping exccess packets is a good way to protect the server from + // If there are plenty of packets stuck in the channel, dropping excessive packets is a good way to protect the server from // being OOM. let (sender, receiver) = mpsc::channel(1024); diff --git a/crates/shadowsocks-service/src/server/server.rs b/crates/shadowsocks-service/src/server/server.rs index f6550100..02014314 100644 --- a/crates/shadowsocks-service/src/server/server.rs +++ b/crates/shadowsocks-service/src/server/server.rs @@ -159,7 +159,7 @@ impl Server { error!("servers exited with error: {}", err); } - let err = io::Error::new(ErrorKind::Other, "server exited unexpectly"); + let err = io::Error::new(ErrorKind::Other, "server exited unexpectedly"); Err(err) } diff --git a/crates/shadowsocks-service/src/server/tcprelay.rs b/crates/shadowsocks-service/src/server/tcprelay.rs index 039dfb40..9614eead 100644 --- a/crates/shadowsocks-service/src/server/tcprelay.rs +++ b/crates/shadowsocks-service/src/server/tcprelay.rs @@ -129,7 +129,7 @@ impl TcpServerClient { let res = ignore_until_end(&mut stream).await; trace!( - "slient-drop peer: {} is now closing with result {:?}", + "silent-drop peer: {} is now closing with result {:?}", self.peer_addr, res ); diff --git a/crates/shadowsocks-service/src/server/udprelay.rs b/crates/shadowsocks-service/src/server/udprelay.rs index 78bba23e..7e8cbba9 100644 --- a/crates/shadowsocks-service/src/server/udprelay.rs +++ b/crates/shadowsocks-service/src/server/udprelay.rs @@ -243,7 +243,7 @@ impl UdpAssociationContext { keepalive_tx: mpsc::Sender, ) -> (Arc, mpsc::Sender<(Address, Bytes)>) { // Pending packets 1024 should be good enough for a server. - // If there are plenty of packets stuck in the channel, dropping exccess packets is a good way to protect the server from + // If there are plenty of packets stuck in the channel, dropping excessive packets is a good way to protect the server from // being OOM. let (sender, receiver) = mpsc::channel(1024); diff --git a/crates/shadowsocks/Cargo.toml b/crates/shadowsocks/Cargo.toml index 818fa0d9..3f329374 100644 --- a/crates/shadowsocks/Cargo.toml +++ b/crates/shadowsocks/Cargo.toml @@ -22,7 +22,7 @@ default = [ trust-dns = ["trust-dns-resolver", "arc-swap", "notify"] # Enable Stream Cipher Protocol -# WARN: Stream Cipher Protocol is proved to be insecured +# WARN: Stream Cipher Protocol is proved to be insecure # https://github.com/shadowsocks/shadowsocks-rust/issues/373 # Users should always avoid using these ciphers in practice stream-cipher = ["shadowsocks-crypto/v1-stream"] diff --git a/crates/shadowsocks/src/dns_resolver/resolver.rs b/crates/shadowsocks/src/dns_resolver/resolver.rs index 1f242c99..5bcc211f 100644 --- a/crates/shadowsocks/src/dns_resolver/resolver.rs +++ b/crates/shadowsocks/src/dns_resolver/resolver.rs @@ -198,7 +198,7 @@ async fn trust_dns_notify_update_dns(resolver: Arc) -> n update_task = Some(task); } - error!("auto-reload {} task exited unexpectly", DNS_RESOLV_FILE_PATH); + error!("auto-reload {} task exited unexpectedly", DNS_RESOLV_FILE_PATH); Ok(()) } diff --git a/crates/shadowsocks/src/manager/protocol.rs b/crates/shadowsocks/src/manager/protocol.rs index f28f2a1b..ddd6465d 100644 --- a/crates/shadowsocks/src/manager/protocol.rs +++ b/crates/shadowsocks/src/manager/protocol.rs @@ -186,7 +186,7 @@ impl ManagerProtocol for PingRequest { } } -/// `ping` reponse +/// `ping` response #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(transparent)] pub struct PingResponse { diff --git a/crates/shadowsocks/src/net/option.rs b/crates/shadowsocks/src/net/option.rs index de8ada2e..b5b6779a 100644 --- a/crates/shadowsocks/src/net/option.rs +++ b/crates/shadowsocks/src/net/option.rs @@ -17,7 +17,7 @@ pub struct TcpSocketOpts { /// `TCP_FASTOPEN`, enables TFO pub fastopen: bool, - /// `SO_KEEPALIVE` and sets `TCP_KEEPIDLE`, `TCP_KEEPINTVL` and `TCP_KEEPCNT` respectly, + /// `SO_KEEPALIVE` and sets `TCP_KEEPIDLE`, `TCP_KEEPINTVL` and `TCP_KEEPCNT` respectively, /// enables keep-alive messages on connection-oriented sockets pub keepalive: Option, } diff --git a/crates/shadowsocks/src/net/sys/unix/uds.rs b/crates/shadowsocks/src/net/sys/unix/uds.rs index a97e0c04..1528b133 100644 --- a/crates/shadowsocks/src/net/sys/unix/uds.rs +++ b/crates/shadowsocks/src/net/sys/unix/uds.rs @@ -46,7 +46,7 @@ impl UnixStream { // self.io.poll_write_ready indicates that writable event have been received by tokio, // so it is not a common case that sendto returns EAGAIN. // - // Just for double check. If EAGAIN actually returns, clear the readness state. + // Just for double check. If EAGAIN actually returns, clear the readiness state. Err(ref err) if err.kind() == ErrorKind::WouldBlock => { ready.clear_ready(); } @@ -74,7 +74,7 @@ impl UnixStream { // self.io.poll_write_ready indicates that writable event have been received by tokio, // so it is not a common case that recvto returns EAGAIN. // - // Just for double check. If EAGAIN actually returns, clear the readness state. + // Just for double check. If EAGAIN actually returns, clear the readiness state. Err(ref err) if err.kind() == ErrorKind::WouldBlock => { ready.clear_ready(); } diff --git a/debian/changelog b/debian/changelog index 8f935fc2..d1127384 100644 --- a/debian/changelog +++ b/debian/changelog @@ -46,7 +46,7 @@ shadowsocks-rust (1.11.2) unstable; urgency=medium ## Security - - #556 Remove slient dropping when replay was detected + - #556 Remove silent dropping when replay was detected -- ty Sat, 24 July 2021 11:50:00 +0800 @@ -375,7 +375,7 @@ shadowsocks-rust (1.8.17) unstable; urgency=medium ## BUG Fixed - * [#292](https://github.com/shadowsocks/shadowsocks-rust/pull/292) Hold the TCP connection if it failed to decrypt the first packet for preventing activing probing. + * [#292](https://github.com/shadowsocks/shadowsocks-rust/pull/292) Hold the TCP connection if it failed to decrypt the first packet for preventing active probing. * [#293](https://github.com/shadowsocks/shadowsocks-rust/pull/293) Keep server running if it fails to create UDP associations. -- ty Tue, 8 Sep 2020 23:31:20 +0800 @@ -440,7 +440,7 @@ shadowsocks-rust (1.8.12) unstable; urgency=medium * [#233](https://github.com/shadowsocks/shadowsocks-rust/issues/233) sslocal supports socks4 protocol (SOCKS4/4a) * Options for LRU cache in UDP relay: * udp_timeout: UDP Association will be kept up to this duration (in seconds) - * udp_max_associations: Maximum number of UDP Associations will be kept simutanously + * udp_max_associations: Maximum number of UDP Associations will be kept simultaneously ## BUG Fixed @@ -462,7 +462,7 @@ shadowsocks-rust (1.8.11) unstable; urgency=medium * [#232](https://github.com/shadowsocks/shadowsocks-rust/issues/232) Send data along with handshake (LOCAL -> REMOTE) * HTTP server supports https target with both native-tls and rustls - * For rustls, https connections will try to negociate h2 with ALPN + * For rustls, https connections will try to negotiate h2 with ALPN * shadowsocks/shadowsocks-org#161 Support none as dummy cipher's name * Adding local-tunnel feature for controlling tunnel protocol * [#252](https://github.com/shadowsocks/shadowsocks-rust/issues/252) Support udp_max_associations configuration option @@ -554,7 +554,7 @@ shadowsocks-rust (1.8.8) unstable; urgency=medium * Eliminated those connection failures while sslocal server just started * [#191](https://github.com/shadowsocks/shadowsocks-rust/issues/191) Skip IV/nonce duplication check for plain cipher - ## Miscelleous + ## Miscellaneous * Nightly builds on CircleCI: https://circleci.com/gh/shadowsocks/shadowsocks-rust * Obtain release binaries in #Artifacts, for example: @@ -656,7 +656,7 @@ shadowsocks-rust (1.8.0) unstable; urgency=medium * `trust-dns-resolver` - `v0.18` * `libsodium-sys` (switched from `libsodium-ffi` for better build process) * Ping balancer - * Calculate scores not only with servers' latency, but also availablity + * Calculate scores not only with servers' latency, but also availability * Supports UDP relay * Retry 3 times if it connects failed to remote proxy server automatically diff --git a/debian/control b/debian/control index 933d8276..94d02847 100644 --- a/debian/control +++ b/debian/control @@ -12,5 +12,5 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base Conflicts: shadowsocks Description: Rust port of shadowsocks, a secure socks5 proxy Shadowsocks is a fast tunnel proxy that helps you bypass firewalls. - Shadowsocks-rust was inspired by Shadowsock (in Python). It's rewritten + Shadowsocks-rust was inspired by Shadowsocks (in Python). It's rewritten in rust.