Skip to content

Commit 21008ac

Browse files
committed
SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN
- ref #773
1 parent 3e58abd commit 21008ac

File tree

7 files changed

+35
-15
lines changed

7 files changed

+35
-15
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "shadowsocks-rust"
3-
version = "1.13.4"
3+
version = "1.13.5"
44
authors = ["Shadowsocks Contributors"]
55
description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls."
66
repository = "https://github.com/shadowsocks/shadowsocks-rust"
@@ -164,7 +164,7 @@ jemallocator = { version = "0.3", optional = true }
164164
snmalloc-rs = { version = "0.2", optional = true }
165165
rpmalloc = { version = "0.2", optional = true }
166166

167-
shadowsocks-service = { version = "1.13.4", path = "./crates/shadowsocks-service" }
167+
shadowsocks-service = { version = "1.13.5", path = "./crates/shadowsocks-service" }
168168

169169
[target.'cfg(unix)'.dependencies]
170170
daemonize = "0.4"

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,7 @@ Example configuration:
662662
### Environment Variables
663663

664664
- `SS_SERVER_PASSWORD`: A default password for servers that created from command line argument (`--server-addr`)
665+
- `SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN`: `"system"` DNS resolver force use system's builtin (`getaddrinfo` in *NIX)
665666

666667
## Supported Ciphers
667668

crates/shadowsocks-service/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "shadowsocks-service"
3-
version = "1.13.4"
3+
version = "1.13.5"
44
authors = ["Shadowsocks Contributors"]
55
description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls."
66
repository = "https://github.com/shadowsocks/shadowsocks-rust"

crates/shadowsocks-service/src/dns/mod.rs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
//! DNS resolvers
22
3+
use log::trace;
34
use shadowsocks::{dns_resolver::DnsResolver, net::ConnectOpts};
45

56
use crate::config::DnsConfig;
@@ -11,19 +12,32 @@ pub async fn build_dns_resolver(dns: DnsConfig, ipv6_first: bool, connect_opts:
1112
#[cfg(feature = "trust-dns")]
1213
if crate::hint_support_default_system_resolver() {
1314
use log::warn;
15+
use std::env;
1416

15-
return match DnsResolver::trust_dns_system_resolver(ipv6_first).await {
16-
Ok(r) => Some(r),
17-
Err(err) => {
18-
warn!(
17+
let force_system_builtin = match env::var("SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN") {
18+
Ok(mut v) => {
19+
v.make_ascii_lowercase();
20+
v == "1" || v == "true"
21+
}
22+
Err(..) => false,
23+
};
24+
25+
if !force_system_builtin {
26+
return match DnsResolver::trust_dns_system_resolver(ipv6_first).await {
27+
Ok(r) => Some(r),
28+
Err(err) => {
29+
warn!(
1930
"initialize trust-dns DNS system resolver failed, fallback to default system resolver, error: {}",
2031
err
2132
);
22-
None
23-
}
24-
};
33+
None
34+
}
35+
};
36+
}
2537
}
2638

39+
trace!("initialized DNS system resolver builtin");
40+
2741
None
2842
}
2943
#[cfg(feature = "trust-dns")]
@@ -42,7 +56,6 @@ pub async fn build_dns_resolver(dns: DnsConfig, ipv6_first: bool, connect_opts:
4256
#[cfg(feature = "local-dns")]
4357
DnsConfig::LocalDns(ns) => {
4458
use crate::local::dns::dns_resolver::DnsResolver as LocalDnsResolver;
45-
use log::trace;
4659
use shadowsocks::config::Mode;
4760

4861
trace!("initializing direct DNS resolver for {}", ns);

crates/shadowsocks-service/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ fn hint_support_default_system_resolver() -> bool {
8282
cfg!(all(
8383
unix,
8484
not(target_os = "android"),
85-
/* not(target_os = "macos"),
86-
* not(target_os = "ios") */
85+
// not(target_os = "macos"),
86+
// not(target_os = "ios")
8787
))
8888
}

debian/changelog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
shadowsocks-rust (1.13.5) unstable; urgency=medium
2+
3+
## Features
4+
5+
- #773 Set environment variable `SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN` to use system's builtin DNS resolver
6+
17
shadowsocks-rust (1.13.4) unstable; urgency=medium
28

39
## Features

0 commit comments

Comments
 (0)