Skip to content

Commit f3a8810

Browse files
Upgrade shadowsocks to 1.21
1 parent 6d811b3 commit f3a8810

File tree

5 files changed

+28
-27
lines changed

5 files changed

+28
-27
lines changed

Cargo.lock

+10-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ env_logger = "0.10.0"
125125
thiserror = "1.0.57"
126126
log = "0.4"
127127

128-
shadowsocks = "1.20.3"
129-
shadowsocks-service = "1.20.3"
128+
shadowsocks = "1.21.0"
129+
shadowsocks-service = "1.21.2"
130130

131131
windows-sys = "0.52.0"
132132

test/Cargo.lock

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/Cargo.toml

-4
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,6 @@ thiserror = "1.0.57"
6868
log = "0.4"
6969
colored = "2.0.0"
7070

71-
# Proxy protocols
72-
shadowsocks = "1.20.3"
73-
shadowsocks-service = "1.20.3"
74-
7571
windows-sys = "0.52.0"
7672
chrono = { version = "0.4.26", default-features = false }
7773
clap = { version = "4.2.7", features = ["cargo", "derive"] }

tunnel-obfuscation/src/shadowsocks.rs

+10-6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use shadowsocks::{
1111
config::{ServerConfig, ServerType},
1212
context::Context,
1313
crypto::CipherKind,
14+
net::{ConnectOpts, UdpSocket},
1415
relay::{
1516
udprelay::proxy_socket::{ProxySocketError, UdpSocketType},
1617
Address,
@@ -20,7 +21,7 @@ use shadowsocks::{
2021
#[cfg(any(target_os = "android", target_os = "linux"))]
2122
use std::os::fd::AsRawFd;
2223
use std::{io, net::SocketAddr, sync::Arc};
23-
use tokio::{net::UdpSocket, sync::oneshot};
24+
use tokio::sync::oneshot;
2425

2526
const SHADOWSOCKS_CIPHER: CipherKind = CipherKind::AES_256_GCM;
2627
const SHADOWSOCKS_PASSWORD: &str = "mullvad";
@@ -157,7 +158,10 @@ async fn run_forwarding(
157158
Ok(())
158159
}
159160

160-
fn connect_shadowsocks(remote_socket: UdpSocket, shadowsocks_endpoint: SocketAddr) -> ProxySocket {
161+
fn connect_shadowsocks(
162+
remote_socket: UdpSocket,
163+
shadowsocks_endpoint: SocketAddr,
164+
) -> ProxySocket<UdpSocket> {
161165
let ss_context = Context::new_shared(ServerType::Local);
162166
let ss_config: ServerConfig = ServerConfig::new(
163167
shadowsocks_endpoint,
@@ -176,7 +180,7 @@ async fn create_shadowsocks_socket(
176180
} else {
177181
SocketAddr::new("::".parse().unwrap(), 0)
178182
};
179-
let socket = UdpSocket::bind(random_bind_addr)
183+
let socket = UdpSocket::bind_with_opts(&random_bind_addr, &ConnectOpts::default())
180184
.await
181185
.map_err(Error::BindRemoteUdp)?;
182186
#[cfg(target_os = "linux")]
@@ -193,7 +197,7 @@ async fn create_local_udp_socket(ipv4: bool) -> Result<(UdpSocket, SocketAddr)>
193197
} else {
194198
SocketAddr::new("::1".parse().unwrap(), 0)
195199
};
196-
let local_udp_socket = UdpSocket::bind(random_bind_addr)
200+
let local_udp_socket = UdpSocket::bind_with_opts(&random_bind_addr, &ConnectOpts::default())
197201
.await
198202
.map_err(Error::BindUdp)?;
199203
let udp_client_addr = local_udp_socket
@@ -213,7 +217,7 @@ async fn wait_for_local_udp_client(udp_listener: &UdpSocket) -> io::Result<()> {
213217
}
214218

215219
async fn handle_outgoing(
216-
ss_write: Arc<ProxySocket>,
220+
ss_write: Arc<ProxySocket<UdpSocket>>,
217221
local_udp_read: Arc<UdpSocket>,
218222
ss_addr: SocketAddr,
219223
wg_addr: Address,
@@ -243,7 +247,7 @@ async fn handle_outgoing(
243247
}
244248

245249
async fn handle_incoming(
246-
ss_read: Arc<ProxySocket>,
250+
ss_read: Arc<ProxySocket<UdpSocket>>,
247251
local_udp_write: Arc<UdpSocket>,
248252
ss_addr: SocketAddr,
249253
wg_addr: Address,

0 commit comments

Comments
 (0)