Skip to content

Commit

Permalink
SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN
Browse files Browse the repository at this point in the history
- ref #773
  • Loading branch information
zonyitoo committed Feb 25, 2022
1 parent 3e58abd commit 21008ac
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 15 deletions.
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "shadowsocks-rust"
version = "1.13.4"
version = "1.13.5"
authors = ["Shadowsocks Contributors"]
description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls."
repository = "https://github.com/shadowsocks/shadowsocks-rust"
Expand Down Expand Up @@ -164,7 +164,7 @@ jemallocator = { version = "0.3", optional = true }
snmalloc-rs = { version = "0.2", optional = true }
rpmalloc = { version = "0.2", optional = true }

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

[target.'cfg(unix)'.dependencies]
daemonize = "0.4"
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -662,6 +662,7 @@ Example configuration:
### Environment Variables

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

## Supported Ciphers

Expand Down
2 changes: 1 addition & 1 deletion crates/shadowsocks-service/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "shadowsocks-service"
version = "1.13.4"
version = "1.13.5"
authors = ["Shadowsocks Contributors"]
description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls."
repository = "https://github.com/shadowsocks/shadowsocks-rust"
Expand Down
29 changes: 21 additions & 8 deletions crates/shadowsocks-service/src/dns/mod.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//! DNS resolvers

use log::trace;
use shadowsocks::{dns_resolver::DnsResolver, net::ConnectOpts};

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

return match DnsResolver::trust_dns_system_resolver(ipv6_first).await {
Ok(r) => Some(r),
Err(err) => {
warn!(
let force_system_builtin = match env::var("SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN") {
Ok(mut v) => {
v.make_ascii_lowercase();
v == "1" || v == "true"
}
Err(..) => false,
};

if !force_system_builtin {
return match DnsResolver::trust_dns_system_resolver(ipv6_first).await {
Ok(r) => Some(r),
Err(err) => {
warn!(
"initialize trust-dns DNS system resolver failed, fallback to default system resolver, error: {}",
err
);
None
}
};
None
}
};
}
}

trace!("initialized DNS system resolver builtin");

None
}
#[cfg(feature = "trust-dns")]
Expand All @@ -42,7 +56,6 @@ pub async fn build_dns_resolver(dns: DnsConfig, ipv6_first: bool, connect_opts:
#[cfg(feature = "local-dns")]
DnsConfig::LocalDns(ns) => {
use crate::local::dns::dns_resolver::DnsResolver as LocalDnsResolver;
use log::trace;
use shadowsocks::config::Mode;

trace!("initializing direct DNS resolver for {}", ns);
Expand Down
4 changes: 2 additions & 2 deletions crates/shadowsocks-service/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ fn hint_support_default_system_resolver() -> bool {
cfg!(all(
unix,
not(target_os = "android"),
/* not(target_os = "macos"),
* not(target_os = "ios") */
// not(target_os = "macos"),
// not(target_os = "ios")
))
}
6 changes: 6 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
shadowsocks-rust (1.13.5) unstable; urgency=medium

## Features

- #773 Set environment variable `SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN` to use system's builtin DNS resolver

shadowsocks-rust (1.13.4) unstable; urgency=medium

## Features
Expand Down

0 comments on commit 21008ac

Please sign in to comment.