Skip to content

Commit 6973480

Browse files
committed
feat: updated edition 2024, msrv 1.85
1 parent b4dd9c2 commit 6973480

File tree

34 files changed

+1061
-1020
lines changed

34 files changed

+1061
-1020
lines changed

.github/workflows/build-msrv.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ jobs:
2828
- name: Install Rust
2929
run: |
3030
rustup set profile minimal
31-
rustup toolchain install 1.83
32-
rustup default 1.83
33-
rustup override set 1.83
31+
rustup toolchain install 1.85
32+
rustup default 1.85
33+
rustup override set 1.85
3434
- name: Build with All Features Enabled (Unix)
3535
if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }}
3636
run: cargo build --verbose --features "full-extra local-flow-stat utility-url-outline"
@@ -55,9 +55,9 @@ jobs:
5555
- name: Install Rust
5656
run: |
5757
rustup set profile minimal
58-
rustup toolchain install 1.83
59-
rustup default 1.83
60-
rustup override set 1.83
58+
rustup toolchain install 1.85
59+
rustup default 1.85
60+
rustup override set 1.85
6161
- name: Build with All Features Enabled
6262
run: cargo build --manifest-path crates/shadowsocks-service/Cargo.toml --verbose --features "full dns-over-tls dns-over-https dns-over-h3 local-dns local-flow-stat local-http-rustls local-tun local-fake-dns local-online-config stream-cipher aead-cipher-extra aead-cipher-2022 aead-cipher-2022-extra security-replay-attack-detect"
6363

@@ -78,8 +78,8 @@ jobs:
7878
- name: Install Rust
7979
run: |
8080
rustup set profile minimal
81-
rustup toolchain install 1.77
82-
rustup default 1.77
83-
rustup override set 1.77
81+
rustup toolchain install 1.85
82+
rustup default 1.85
83+
rustup override set 1.85
8484
- name: Build with All Features Enabled
8585
run: cargo build --manifest-path crates/shadowsocks/Cargo.toml --verbose --features "stream-cipher aead-cipher-extra aead-cipher-2022 aead-cipher-2022-extra security-replay-attack-detect"

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ readme = "README.md"
88
documentation = "https://docs.rs/shadowsocks-rust"
99
keywords = ["shadowsocks", "proxy", "socks", "socks5", "firewall"]
1010
license = "MIT"
11-
edition = "2021"
12-
rust-version = "1.83"
11+
edition = "2024"
12+
rust-version = "1.85"
1313

1414
[badges]
1515
maintenance = { status = "passively-maintained" }

crates/shadowsocks-service/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ readme = "README.md"
88
documentation = "https://docs.rs/shadowsocks-service"
99
keywords = ["shadowsocks", "proxy", "socks", "socks5", "firewall"]
1010
license = "MIT"
11-
edition = "2021"
12-
rust-version = "1.83"
11+
edition = "2024"
12+
rust-version = "1.85"
1313

1414
[badges]
1515
maintenance = { status = "passively-maintained" }

crates/shadowsocks-service/src/config.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2781,11 +2781,11 @@ impl fmt::Display for Config {
27812781
let local = &local_instance.config;
27822782
if let Some(ref a) = local.addr {
27832783
jconf.local_address = Some(match a {
2784-
ServerAddr::SocketAddr(ref sa) => sa.ip().to_string(),
2785-
ServerAddr::DomainName(ref dm, ..) => dm.to_string(),
2784+
ServerAddr::SocketAddr(sa) => sa.ip().to_string(),
2785+
ServerAddr::DomainName(dm, ..) => dm.to_string(),
27862786
});
27872787
jconf.local_port = Some(match a {
2788-
ServerAddr::SocketAddr(ref sa) => sa.port(),
2788+
ServerAddr::SocketAddr(sa) => sa.port(),
27892789
ServerAddr::DomainName(.., port) => *port,
27902790
});
27912791
}
@@ -2811,11 +2811,11 @@ impl fmt::Display for Config {
28112811

28122812
let jlocal = SSLocalExtConfig {
28132813
local_address: local.addr.as_ref().map(|a| match a {
2814-
ServerAddr::SocketAddr(ref sa) => sa.ip().to_string(),
2815-
ServerAddr::DomainName(ref dm, ..) => dm.to_string(),
2814+
ServerAddr::SocketAddr(sa) => sa.ip().to_string(),
2815+
ServerAddr::DomainName(dm, ..) => dm.to_string(),
28162816
}),
28172817
local_port: local.addr.as_ref().map(|a| match a {
2818-
ServerAddr::SocketAddr(ref sa) => sa.port(),
2818+
ServerAddr::SocketAddr(sa) => sa.port(),
28192819
ServerAddr::DomainName(.., port) => *port,
28202820
}),
28212821
disabled: None,
@@ -2853,25 +2853,25 @@ impl fmt::Display for Config {
28532853
forward_address: match local.forward_addr {
28542854
None => None,
28552855
Some(ref forward_addr) => match forward_addr {
2856-
Address::SocketAddress(ref sa) => Some(sa.ip().to_string()),
2857-
Address::DomainNameAddress(ref dm, ..) => Some(dm.to_string()),
2856+
Address::SocketAddress(sa) => Some(sa.ip().to_string()),
2857+
Address::DomainNameAddress(dm, ..) => Some(dm.to_string()),
28582858
},
28592859
},
28602860
#[cfg(feature = "local-tunnel")]
28612861
forward_port: match local.forward_addr {
28622862
None => None,
28632863
Some(ref forward_addr) => match forward_addr {
2864-
Address::SocketAddress(ref sa) => Some(sa.port()),
2864+
Address::SocketAddress(sa) => Some(sa.port()),
28652865
Address::DomainNameAddress(.., port) => Some(*port),
28662866
},
28672867
},
28682868
#[cfg(feature = "local-dns")]
28692869
local_dns_address: match local.local_dns_addr {
28702870
None => None,
28712871
Some(ref local_dns_addr) => match local_dns_addr {
2872-
NameServerAddr::SocketAddr(ref sa) => Some(sa.ip().to_string()),
2872+
NameServerAddr::SocketAddr(sa) => Some(sa.ip().to_string()),
28732873
#[cfg(unix)]
2874-
NameServerAddr::UnixSocketAddr(ref path) => {
2874+
NameServerAddr::UnixSocketAddr(path) => {
28752875
Some(path.to_str().expect("path is not utf-8").to_owned())
28762876
}
28772877
},
@@ -2880,7 +2880,7 @@ impl fmt::Display for Config {
28802880
local_dns_port: match local.local_dns_addr {
28812881
None => None,
28822882
Some(ref local_dns_addr) => match local_dns_addr {
2883-
NameServerAddr::SocketAddr(ref sa) => Some(sa.port()),
2883+
NameServerAddr::SocketAddr(sa) => Some(sa.port()),
28842884
#[cfg(unix)]
28852885
NameServerAddr::UnixSocketAddr(..) => None,
28862886
},
@@ -2889,15 +2889,15 @@ impl fmt::Display for Config {
28892889
remote_dns_address: match local.remote_dns_addr {
28902890
None => None,
28912891
Some(ref remote_dns_addr) => match remote_dns_addr {
2892-
Address::SocketAddress(ref sa) => Some(sa.ip().to_string()),
2893-
Address::DomainNameAddress(ref dm, ..) => Some(dm.to_string()),
2892+
Address::SocketAddress(sa) => Some(sa.ip().to_string()),
2893+
Address::DomainNameAddress(dm, ..) => Some(dm.to_string()),
28942894
},
28952895
},
28962896
#[cfg(feature = "local-dns")]
28972897
remote_dns_port: match local.remote_dns_addr {
28982898
None => None,
28992899
Some(ref remote_dns_addr) => match remote_dns_addr {
2900-
Address::SocketAddress(ref sa) => Some(sa.port()),
2900+
Address::SocketAddress(sa) => Some(sa.port()),
29012901
Address::DomainNameAddress(.., port) => Some(*port),
29022902
},
29032903
},

crates/shadowsocks-service/src/local/context.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ impl ServiceContext {
137137
Some(ref acl) => {
138138
#[cfg(feature = "local-dns")]
139139
{
140-
if let Address::SocketAddress(ref saddr) = addr {
140+
if let Address::SocketAddress(saddr) = addr {
141141
// do the reverse lookup in our local cache
142142
let mut reverse_lookup_cache = self.reverse_lookup_cache.lock().await;
143143
// if a qname is found

crates/shadowsocks-service/src/local/dns/server.rs

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -211,15 +211,17 @@ impl DnsTcpServerBuilder {
211211
async fn build(self) -> io::Result<DnsTcpServer> {
212212
cfg_if::cfg_if! {
213213
if #[cfg(target_os = "macos")] {
214-
let listener = if let Some(launchd_socket_name) = self.launchd_socket_name {
215-
use tokio::net::TcpListener as TokioTcpListener;
216-
use crate::net::launch_activate_socket::get_launch_activate_tcp_listener;
217-
218-
let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name, true)?;
219-
let tokio_listener = TokioTcpListener::from_std(std_listener)?;
220-
TcpListener::from_listener(tokio_listener, self.context.accept_opts())?
221-
} else {
222-
create_standard_tcp_listener(&self.context, &self.bind_addr).await?
214+
let listener = match self.launchd_socket_name {
215+
Some(launchd_socket_name) => {
216+
use tokio::net::TcpListener as TokioTcpListener;
217+
use crate::net::launch_activate_socket::get_launch_activate_tcp_listener;
218+
219+
let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name, true)?;
220+
let tokio_listener = TokioTcpListener::from_std(std_listener)?;
221+
TcpListener::from_listener(tokio_listener, self.context.accept_opts())?
222+
} _ => {
223+
create_standard_tcp_listener(&self.context, &self.bind_addr).await?
224+
}
223225
};
224226
} else {
225227
let listener = create_standard_tcp_listener(&self.context, &self.bind_addr).await?;
@@ -384,15 +386,15 @@ impl DnsUdpServerBuilder {
384386
async fn build(self) -> io::Result<DnsUdpServer> {
385387
cfg_if::cfg_if! {
386388
if #[cfg(target_os = "macos")] {
387-
let socket = if let Some(launchd_socket_name) = self.launchd_socket_name {
389+
let socket = match self.launchd_socket_name { Some(launchd_socket_name) => {
388390
use tokio::net::UdpSocket as TokioUdpSocket;
389391
use crate::net::launch_activate_socket::get_launch_activate_udp_socket;
390392

391393
let std_socket = get_launch_activate_udp_socket(&launchd_socket_name, true)?;
392394
TokioUdpSocket::from_std(std_socket)?
393-
} else {
395+
} _ => {
394396
create_standard_udp_listener(&self.context, &self.bind_addr).await?.into()
395-
};
397+
}};
396398
} else {
397399
let socket = create_standard_udp_listener(&self.context, &self.bind_addr).await?.into();
398400
}
@@ -589,7 +591,7 @@ fn should_forward_by_query(context: &ServiceContext, balancer: &PingBalancer, qu
589591
// https://github.com/shadowsocks/shadowsocks-android/issues/2722
590592
for server in balancer.servers() {
591593
let svr_cfg = server.server_config();
592-
if let ServerAddr::DomainName(ref dn, ..) = svr_cfg.addr() {
594+
if let ServerAddr::DomainName(dn, ..) = svr_cfg.addr() {
593595
// Convert domain name to `Name`
594596
// Ignore it if error occurs
595597
if let Ok(name) = Name::from_str(dn) {
@@ -629,11 +631,11 @@ fn should_forward_by_response(
629631
query: &Query,
630632
) -> bool {
631633
if let Some(acl) = acl {
632-
if let Ok(ref local_response) = local_response {
634+
if let Ok(local_response) = local_response {
633635
let mut names = HashSet::new();
634636
names.insert(query.name());
635637
macro_rules! examine_name {
636-
($name:expr, $is_answer:expr) => {{
638+
($name:expr_2021, $is_answer:expr_2021) => {{
637639
names.insert($name);
638640
if $is_answer {
639641
if let Some(value) = check_name_in_proxy_list(acl, $name) {
@@ -647,7 +649,7 @@ fn should_forward_by_response(
647649
}};
648650
}
649651
macro_rules! examine_record {
650-
($rec:ident, $is_answer:expr) => {
652+
($rec:ident, $is_answer:expr_2021) => {
651653
if let RData::CNAME(name) = $rec.data() {
652654
if $is_answer {
653655
if let Some(value) = check_name_in_proxy_list(acl, name) {

crates/shadowsocks-service/src/local/http/http_client.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -383,10 +383,13 @@ where
383383
&& (req.uri().scheme().is_some() || req.uri().authority().is_some())
384384
{
385385
let mut builder = Uri::builder();
386-
if let Some(path_and_query) = req.uri().path_and_query() {
387-
builder = builder.path_and_query(path_and_query.as_str());
388-
} else {
389-
builder = builder.path_and_query("/");
386+
match req.uri().path_and_query() {
387+
Some(path_and_query) => {
388+
builder = builder.path_and_query(path_and_query.as_str());
389+
}
390+
_ => {
391+
builder = builder.path_and_query("/");
392+
}
390393
}
391394
*(req.uri_mut()) = builder.build()?;
392395
}

crates/shadowsocks-service/src/local/http/server.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,17 @@ impl HttpBuilder {
5858
pub async fn build(self) -> io::Result<Http> {
5959
cfg_if::cfg_if! {
6060
if #[cfg(target_os = "macos")] {
61-
let listener = if let Some(launchd_socket_name) = self.launchd_tcp_socket_name {
62-
use tokio::net::TcpListener as TokioTcpListener;
63-
use crate::net::launch_activate_socket::get_launch_activate_tcp_listener;
64-
65-
let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name, true)?;
66-
let tokio_listener = TokioTcpListener::from_std(std_listener)?;
67-
TcpListener::from_listener(tokio_listener, self.context.accept_opts())?
68-
} else {
69-
create_standard_tcp_listener(&self.context, &self.client_config).await?
61+
let listener = match self.launchd_tcp_socket_name {
62+
Some(launchd_socket_name) => {
63+
use tokio::net::TcpListener as TokioTcpListener;
64+
use crate::net::launch_activate_socket::get_launch_activate_tcp_listener;
65+
66+
let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name, true)?;
67+
let tokio_listener = TokioTcpListener::from_std(std_listener)?;
68+
TcpListener::from_listener(tokio_listener, self.context.accept_opts())?
69+
} _ => {
70+
create_standard_tcp_listener(&self.context, &self.client_config).await?
71+
}
7072
};
7173
} else {
7274
let listener = create_standard_tcp_listener(&self.context, &self.client_config).await?;

crates/shadowsocks-service/src/local/net/udp/association.rs

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -447,14 +447,19 @@ where
447447
err
448448
);
449449
}
450-
} else if let Err(err) = self.dispatch_received_proxied_packet(target_addr, data).await {
451-
error!(
452-
"udp relay {} -> {} (proxied) with {} bytes, error: {}",
453-
self.peer_addr,
454-
target_addr,
455-
data.len(),
456-
err
457-
);
450+
} else {
451+
match self.dispatch_received_proxied_packet(target_addr, data).await {
452+
Err(err) => {
453+
error!(
454+
"udp relay {} -> {} (proxied) with {} bytes, error: {}",
455+
self.peer_addr,
456+
target_addr,
457+
data.len(),
458+
err
459+
);
460+
}
461+
_ => {}
462+
}
458463
}
459464
}
460465

@@ -615,23 +620,26 @@ where
615620
self.keepalive_flag = true;
616621

617622
// Send back to client
618-
if let Err(err) = self.respond_writer.send_to(self.peer_addr, addr, data).await {
619-
warn!(
620-
"udp failed to send back {} bytes to client {}, from target {} ({}), error: {}",
621-
data.len(),
622-
self.peer_addr,
623-
addr,
624-
if bypassed { "bypassed" } else { "proxied" },
625-
err
626-
);
627-
} else {
628-
trace!(
629-
"udp relay {} <- {} ({}) with {} bytes",
630-
self.peer_addr,
631-
addr,
632-
if bypassed { "bypassed" } else { "proxied" },
633-
data.len()
634-
);
623+
match self.respond_writer.send_to(self.peer_addr, addr, data).await {
624+
Err(err) => {
625+
warn!(
626+
"udp failed to send back {} bytes to client {}, from target {} ({}), error: {}",
627+
data.len(),
628+
self.peer_addr,
629+
addr,
630+
if bypassed { "bypassed" } else { "proxied" },
631+
err
632+
);
633+
}
634+
Ok(..) => {
635+
trace!(
636+
"udp relay {} <- {} ({}) with {} bytes",
637+
self.peer_addr,
638+
addr,
639+
if bypassed { "bypassed" } else { "proxied" },
640+
data.len()
641+
);
642+
}
635643
}
636644
}
637645
}

0 commit comments

Comments
 (0)