cargo shadowsocks-rust 1.25.0
v1.25.0

5 hours ago

Breaking Changes

  • MSRV bumps to v1.91, required by smoltcp v0.13
  • refactor(service)!: rework outbound proxy chain into a unified client. The outbound proxy architecture has been completely reworked into a single self-contained module net::outbound, exposing OutboundProxyClient, OutboundProxyStream, Socks5Auth, HttpProxyAuth and a TcpDialer trait.
    • crate::net::outbound_proxy — removed; use crate::net::OutboundProxyClient
    • crate::net::http_connect::HttpConnectClient — moved to crate::net::HttpConnectClient (only available with the local-http feature)
    • crate::net::Socks5TcpClient (the chain-mixing wrapper) — split: the pure SOCKS5 client is now crate::local::socks::client::socks5::Socks5TcpClient; the in-band negotiator is crate::net::Socks5Negotiator
    • crate::local::net::tcp::outbound_proxy — removed
    • ServiceContext::outbound_proxies() — replaced by outbound_client() returning Option<&Arc<OutboundProxyClient>>
  • create_inbound_udp_socket public function signature changed, added allow_fragmentation parameter
  • inbound_udp_allow_fragmentation new configuration option split from outbound_udp_allow_fragmentation, which now only controls outbound sockets. The inbound (listener) UDP sockets default to disabling IP fragmentation (false).

Features

  • #2106 Allow chaining ssserver to another SOCKS5/HTTP/HTTPS proxy
  • #2109 Expose user_key() on CryptoStream and ProxyServerStream, lets callers identify which multi-user identity was authenticated after an AEAD-2022 handshake
  • EIH (Extended Identity Header) support
  • #1994 local-http: Support HTTP Basic auth
  • service: Outbound UDP relay through SOCKS5-only chains. UDP traffic can now be relayed through proxy chains when all hops are SOCKS5. Chains containing HTTP/HTTPS hops will emit a startup warning and UDP traffic will bypass the chain.
  • Optimized socket2::Socket with socket2::SockRef

Bug Fixes

  • Allow fragmentation for inbound UDP replies
  • RUSTSEC-2026-0258, RUSTSEC-2026-0204, RUSTSEC-2026-0185, RUSTSEC-2026-0119, RUSTSEC-2026-0104, RUSTSEC-2026-0099
  • net: Make UDP batch configs match the BSD module routing for tvOS/watchOS
  • #2100 Native build error on arm64
  • shadowsocks-service: Fixed build without local-http feature
  • #2062 http: Add is_ready method and enhance connection checks
  • #2097 Unify alpine base version in Docker images
  • #2093 PingBalancer: Remove unnecessary double checks
  • netbsd: Cross-compilation fixes with getentropy shim and passthrough RUSTFLAGS syntax

Miscellaneous

  • shadowsocks-crypto upgraded to v0.8.0
  • smoltcp upgraded to v0.14
  • Upgraded various dependencies

What's Changed

  • chore(deps): update actions/upload-artifact action to v6 by @renovate[bot] in #2056
  • fix(deps): update rust crate reqwest to 0.13 by @renovate[bot] in #2058
  • chore: clippy fix by @AaronChen0 in #2059
  • fix(http): add is_ready method and enhance connection checks by @arloor in #2062
  • fix(deps): update rust crate nix to 0.31 by @renovate[bot] in #2066
  • chore(deps): update rust crate time to v0.3.46 by @renovate[bot] in #2067
  • chore(deps): update rust crate clap to v4.5.57 by @renovate[bot] in #2071
  • chore(deps): update rust crate regex to v1.12.3 by @renovate[bot] in #2072
  • chore: fix a warning by @AaronChen0 in #2076
  • chore: fix typos by @AaronChen0 in #2075
  • fix(deps): update rust crate rand to 0.10 by @renovate[bot] in #2074
  • chore(deps): update actions/upload-artifact action to v7 by @renovate[bot] in #2079
  • chore(deps): bump quinn-proto from 0.11.13 to 0.11.14 in the cargo group across 1 directory by @dependabot[bot] in #2080
  • chore(deps): update rust crate libc to v0.2.183 by @renovate[bot] in #2085
  • chore(deps): update rust crate socket2 to v0.6.3 by @renovate[bot] in #2086
  • chore(deps): update rust crate tracing-subscriber to v0.3.23 by @renovate[bot] in #2087
  • chore(deps): update rust crate tun to v0.8.6 by @renovate[bot] in #2088
  • chore(deps): update rust crate clap to v4.6.0 by @renovate[bot] in #2089
  • chore(deps): update rust crate ipnet to v2.12.0 by @renovate[bot] in #2090
  • chore(deps): update rust crate tokio to v1.50.0 by @renovate[bot] in #2091
  • chore(deps): update rust docker tag to v1.94.0 by @renovate[bot] in #2092
  • chore(deps): update docker/build-push-action action to v7 by @renovate[bot] in #2081
  • chore(deps): update docker/login-action action to v4 by @renovate[bot] in #2082
  • chore(deps): update docker/setup-buildx-action action to v4 by @renovate[bot] in #2084
  • chore(deps): update docker/metadata-action action to v6 by @renovate[bot] in #2083
  • fix: remove unnecessary double checks in PingBalancer by @AaronChen0 in #2093
  • fix: unify alpine base version by @vndroid in #2097
  • chore(deps): update rust crate arc-swap to v1.9.0 - autoclosed by @renovate[bot] in #2096
  • chore(deps): bump rustls-webpki from 0.103.8 to 0.103.10 in the cargo group across 1 directory by @dependabot[bot] in #2095
  • fix(deps): update rust crate smoltcp to 0.13 by @renovate[bot] in #2094
  • fix: native build error on arm64 by @vndroid in #2100
  • chore(deps): update rust crate libc to v0.2.184 by @renovate[bot] in #2104
  • chore(deps): update rust crate tokio to v1.51.1 by @renovate[bot] in #2105
  • [Feature]: Allow to chain ssserver to another socks5/http/https proxy #1397 by @missdeer in #2106
  • feat: expose user_key() on CryptoStream and ProxyServerStream by @ibigbug in #2109
  • chore(deps): update softprops/action-gh-release action to v3 by @renovate[bot] in #2108
  • Remove unused imports in outbound_proxy by @faern in #2111
  • chore(deps): update rust crate clap to v4.6.1 by @renovate[bot] in #2113
  • chore(deps): update rust crate tracing-appender to v0.2.5 by @renovate[bot] in #2119
  • chore(deps): update rust crate webpki-roots to v1.0.7 by @renovate[bot] in #2116
  • chore(deps): update rust crate tokio to v1.52.1 by @renovate[bot] in #2110
  • chore(deps): update rust docker tag to v1.95.0 by @renovate[bot] in #2118
  • feat: add eih support by @alex27riva in #2115
  • chore(deps): update rust crate blake3 to v1.8.5 by @renovate[bot] in #2123
  • chore(deps): update rust crate libc to v0.2.186 by @renovate[bot] in #2122
  • chore(deps): update rust crate mimalloc to v0.1.50 by @renovate[bot] in #2120
  • chore(deps): update rust crate rpassword to v7.5.1 by @renovate[bot] in #2126
  • refactor(service)!: rework outbound proxy chain into a unified client by @zonyitoo in #2127
  • fix(deps): update rust crate aes to 0.9 by @renovate[bot] in #2107
  • Replace ring with aws-lc-rs by @faern in #2112
  • fix(deps): update rust crate hickory-resolver to 0.26 by @renovate[bot] in #2114
  • chore(deps): update rust crate pin-project to v1.1.12 by @renovate[bot] in #2133
  • chore(deps): update rust crate hickory-resolver to v0.26.1 by @renovate[bot] in #2132
  • chore(deps): bump openssl from 0.10.75 to 0.10.79 in the cargo group across 1 directory by @dependabot[bot] in #2121
  • chore(deps): update rust crate tokio to v1.52.2 by @renovate[bot] in #2131
  • chore(deps): update rust crate rpassword to v7.5.2 by @renovate[bot] in #2130
  • Document redir iptables setup by @TurboTheTurtle in #2135
  • fix(deps): update rust crate spin to 0.12 by @renovate[bot] in #2136
  • chore(deps): update rust crate log to v0.4.32 by @renovate[bot] in #2140
  • chore(deps): update rust crate time to v0.3.49 by @renovate[bot] in #2141
  • chore(deps): update actions/checkout action to v7 by @renovate[bot] in #2145
  • chore(deps): update rust crate arc-swap to v1.9.2 by @renovate[bot] in #2149
  • chore(deps): update rust crate dynosaur to v0.3.1 by @renovate[bot] in #2153
  • chore(deps): update rust crate env_logger to v0.11.11 by @renovate[bot] in #2148
  • chore(deps): update rust crate etherparse to v0.20.3 by @renovate[bot] in #2154
  • chore(deps): update rust crate spin to v0.12.1 by @renovate[bot] in #2147
  • chore(deps): update rust crate time to v0.3.53 by @renovate[bot] in #2150
  • chore(deps): update rust docker tag to v1.96.1 by @renovate[bot] in #2151
  • chore(deps): update rust crate rand to v0.10.2 by @renovate[bot] in #2152
  • chore(deps): update rust crate bytes to v1.12.1 by @renovate[bot] in #2155
  • chore(deps): update rust crate spin to v0.12.2 by @renovate[bot] in #2156
  • chore(deps): update rust crate clap to v4.6.4 by @renovate[bot] in #2159
  • chore(deps): update rust crate tun to v0.8.14 by @renovate[bot] in #2158
  • fix(net): make udp batch cfgs match the bsd module routing for tvos/watchos by @gengjiawen in #2162
  • chore(deps): update rust crate clap to v4.6.6 by @renovate[bot] in #2163
  • fix: allow fragmentation for inbound UDP replies by @pengwk in #2161
  • chore(deps): update rust crate blake3 to v1.8.7 by @renovate[bot] in #2166
  • chore(deps): update rust crate log to v0.4.34 by @renovate[bot] in #2168
  • chore(deps): update rust crate spin to v0.12.3 by @renovate[bot] in #2165
  • chore(deps): update rust docker tag to v1.98.0 by @renovate[bot] in #2167

New Contributors

Full Changelog: v1.24.0...v1.25.0

Don't miss a new shadowsocks-rust release

NewReleases is sending notifications on new releases.