Switch trust-dns to an off-by-default optional feature
This commit is contained in:
@@ -26,6 +26,9 @@ matrix:
|
|||||||
- rust: stable
|
- rust: stable
|
||||||
env: FEATURES="--features hyper-011"
|
env: FEATURES="--features hyper-011"
|
||||||
|
|
||||||
|
- rust: stable
|
||||||
|
env: FEATURES="--features trust-dns"
|
||||||
|
|
||||||
# android
|
# android
|
||||||
- rust: stable
|
- rust: stable
|
||||||
env: TARGET=aarch64-linux-android
|
env: TARGET=aarch64-linux-android
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ tokio-executor = "0.1.4" # a minimum version so trust-dns-resolver compiles
|
|||||||
tokio-io = "0.1"
|
tokio-io = "0.1"
|
||||||
tokio-threadpool = "0.1.8" # a minimum version so tokio compiles
|
tokio-threadpool = "0.1.8" # a minimum version so tokio compiles
|
||||||
tokio-timer = "0.2.6" # a minimum version so trust-dns-resolver compiles
|
tokio-timer = "0.2.6" # a minimum version so trust-dns-resolver compiles
|
||||||
|
trust-dns-resolver = { version = "0.10", optional = true }
|
||||||
url = "1.2"
|
url = "1.2"
|
||||||
uuid = { version = "0.7", features = ["v4"] }
|
uuid = { version = "0.7", features = ["v4"] }
|
||||||
hyper-rustls = { version = "0.15", optional = true }
|
hyper-rustls = { version = "0.15", optional = true }
|
||||||
@@ -38,12 +39,10 @@ tokio-rustls = { version = "0.8", optional = true }
|
|||||||
webpki-roots = { version = "0.15", optional = true }
|
webpki-roots = { version = "0.15", optional = true }
|
||||||
rustls = { version = "0.14", features = ["dangerous_configuration"], optional = true }
|
rustls = { version = "0.14", features = ["dangerous_configuration"], optional = true }
|
||||||
|
|
||||||
[target.'cfg(not(any(target_os = "android", windows)))'.dependencies]
|
|
||||||
trust-dns-resolver = "0.10"
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
env_logger = "0.6"
|
env_logger = "0.6"
|
||||||
serde_derive = "1.0"
|
serde_derive = "1.0"
|
||||||
|
tokio-tcp = "0.1"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["default-tls"]
|
default = ["default-tls"]
|
||||||
@@ -55,6 +54,8 @@ default-tls-vendored = ["default-tls", "native-tls/vendored"]
|
|||||||
|
|
||||||
rustls-tls = ["hyper-rustls", "tokio-rustls", "webpki-roots", "rustls", "tls"]
|
rustls-tls = ["hyper-rustls", "tokio-rustls", "webpki-roots", "rustls", "tls"]
|
||||||
|
|
||||||
|
trust-dns = ["trust-dns-resolver"]
|
||||||
|
|
||||||
hyper-011 = ["hyper-old-types"]
|
hyper-011 = ["hyper-old-types"]
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
[package.metadata.docs.rs]
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ use bytes::BufMut;
|
|||||||
use std::io;
|
use std::io;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
use dns::TrustDnsResolver;
|
use dns::TrustDnsResolver;
|
||||||
use Proxy;
|
use Proxy;
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
type HttpConnector = ::hyper::client::HttpConnector<TrustDnsResolver>;
|
type HttpConnector = ::hyper::client::HttpConnector<TrustDnsResolver>;
|
||||||
#[cfg(any(target_os = "android", windows))]
|
#[cfg(not(feature = "trust-dns"))]
|
||||||
type HttpConnector = ::hyper::client::HttpConnector;
|
type HttpConnector = ::hyper::client::HttpConnector;
|
||||||
|
|
||||||
|
|
||||||
@@ -74,14 +74,14 @@ impl Connector {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
fn http_connector() -> ::Result<HttpConnector> {
|
fn http_connector() -> ::Result<HttpConnector> {
|
||||||
TrustDnsResolver::new()
|
TrustDnsResolver::new()
|
||||||
.map(HttpConnector::new_with_resolver)
|
.map(HttpConnector::new_with_resolver)
|
||||||
.map_err(::error::dns_system_conf)
|
.map_err(::error::dns_system_conf)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(target_os = "android", windows))]
|
#[cfg(not(feature = "trust-dns"))]
|
||||||
fn http_connector() -> ::Result<HttpConnector> {
|
fn http_connector() -> ::Result<HttpConnector> {
|
||||||
Ok(HttpConnector::new(4))
|
Ok(HttpConnector::new(4))
|
||||||
}
|
}
|
||||||
@@ -279,12 +279,14 @@ fn tunnel_eof() -> io::Error {
|
|||||||
#[cfg(feature = "tls")]
|
#[cfg(feature = "tls")]
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
extern crate tokio_tcp;
|
||||||
|
|
||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
||||||
use std::net::TcpListener;
|
use std::net::TcpListener;
|
||||||
use std::thread;
|
use std::thread;
|
||||||
use futures::Future;
|
use futures::Future;
|
||||||
use tokio::runtime::current_thread::Runtime;
|
use tokio::runtime::current_thread::Runtime;
|
||||||
use tokio::net::TcpStream;
|
use self::tokio_tcp::TcpStream;
|
||||||
use super::tunnel;
|
use super::tunnel;
|
||||||
use proxy;
|
use proxy;
|
||||||
|
|
||||||
|
|||||||
12
src/error.rs
12
src/error.rs
@@ -140,7 +140,7 @@ impl Error {
|
|||||||
Kind::NativeTls(ref e) => Some(e),
|
Kind::NativeTls(ref e) => Some(e),
|
||||||
#[cfg(feature = "rustls-tls")]
|
#[cfg(feature = "rustls-tls")]
|
||||||
Kind::Rustls(ref e) => Some(e),
|
Kind::Rustls(ref e) => Some(e),
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
Kind::DnsSystemConf(ref e) => Some(e),
|
Kind::DnsSystemConf(ref e) => Some(e),
|
||||||
Kind::Io(ref e) => Some(e),
|
Kind::Io(ref e) => Some(e),
|
||||||
Kind::UrlEncoded(ref e) => Some(e),
|
Kind::UrlEncoded(ref e) => Some(e),
|
||||||
@@ -239,7 +239,7 @@ impl fmt::Display for Error {
|
|||||||
Kind::NativeTls(ref e) => fmt::Display::fmt(e, f),
|
Kind::NativeTls(ref e) => fmt::Display::fmt(e, f),
|
||||||
#[cfg(feature = "rustls-tls")]
|
#[cfg(feature = "rustls-tls")]
|
||||||
Kind::Rustls(ref e) => fmt::Display::fmt(e, f),
|
Kind::Rustls(ref e) => fmt::Display::fmt(e, f),
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
Kind::DnsSystemConf(ref e) => {
|
Kind::DnsSystemConf(ref e) => {
|
||||||
write!(f, "failed to load DNS system conf: {}", e)
|
write!(f, "failed to load DNS system conf: {}", e)
|
||||||
},
|
},
|
||||||
@@ -274,7 +274,7 @@ impl StdError for Error {
|
|||||||
Kind::NativeTls(ref e) => e.description(),
|
Kind::NativeTls(ref e) => e.description(),
|
||||||
#[cfg(feature = "rustls-tls")]
|
#[cfg(feature = "rustls-tls")]
|
||||||
Kind::Rustls(ref e) => e.description(),
|
Kind::Rustls(ref e) => e.description(),
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
Kind::DnsSystemConf(_) => "failed to load DNS system conf",
|
Kind::DnsSystemConf(_) => "failed to load DNS system conf",
|
||||||
Kind::Io(ref e) => e.description(),
|
Kind::Io(ref e) => e.description(),
|
||||||
Kind::UrlEncoded(ref e) => e.description(),
|
Kind::UrlEncoded(ref e) => e.description(),
|
||||||
@@ -299,7 +299,7 @@ impl StdError for Error {
|
|||||||
Kind::NativeTls(ref e) => e.cause(),
|
Kind::NativeTls(ref e) => e.cause(),
|
||||||
#[cfg(feature = "rustls-tls")]
|
#[cfg(feature = "rustls-tls")]
|
||||||
Kind::Rustls(ref e) => e.cause(),
|
Kind::Rustls(ref e) => e.cause(),
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
Kind::DnsSystemConf(ref e) => e.cause(),
|
Kind::DnsSystemConf(ref e) => e.cause(),
|
||||||
Kind::Io(ref e) => e.cause(),
|
Kind::Io(ref e) => e.cause(),
|
||||||
Kind::UrlEncoded(ref e) => e.cause(),
|
Kind::UrlEncoded(ref e) => e.cause(),
|
||||||
@@ -326,7 +326,7 @@ pub(crate) enum Kind {
|
|||||||
NativeTls(::native_tls::Error),
|
NativeTls(::native_tls::Error),
|
||||||
#[cfg(feature = "rustls-tls")]
|
#[cfg(feature = "rustls-tls")]
|
||||||
Rustls(::rustls::TLSError),
|
Rustls(::rustls::TLSError),
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
DnsSystemConf(io::Error),
|
DnsSystemConf(io::Error),
|
||||||
Io(io::Error),
|
Io(io::Error),
|
||||||
UrlEncoded(::serde_urlencoded::ser::Error),
|
UrlEncoded(::serde_urlencoded::ser::Error),
|
||||||
@@ -501,7 +501,7 @@ pub(crate) fn url_bad_scheme(url: Url) -> Error {
|
|||||||
Error::new(Kind::UrlBadScheme, Some(url))
|
Error::new(Kind::UrlBadScheme, Some(url))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
pub(crate) fn dns_system_conf(io: io::Error) -> Error {
|
pub(crate) fn dns_system_conf(io: io::Error) -> Error {
|
||||||
Error::new(Kind::DnsSystemConf(io), None)
|
Error::new(Kind::DnsSystemConf(io), None)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,6 +155,8 @@
|
|||||||
//! `native-tls` library to connect over HTTPS.
|
//! `native-tls` library to connect over HTTPS.
|
||||||
//! - **default-tls-vendored**: Enables the `vendored` feature of `native-tls`.
|
//! - **default-tls-vendored**: Enables the `vendored` feature of `native-tls`.
|
||||||
//! - **rustls-tls**: Provides TLS support via the `rustls` library.
|
//! - **rustls-tls**: Provides TLS support via the `rustls` library.
|
||||||
|
//! - **trust-dns**: Enables a trust-dns async resolver instead of default
|
||||||
|
//! threadpool using `getaddrinfo`.
|
||||||
//! - **hyper-011**: Provides support for hyper's old typed headers.
|
//! - **hyper-011**: Provides support for hyper's old typed headers.
|
||||||
//!
|
//!
|
||||||
//!
|
//!
|
||||||
@@ -196,7 +198,7 @@ extern crate serde_urlencoded;
|
|||||||
extern crate tokio;
|
extern crate tokio;
|
||||||
#[cfg_attr(feature = "default-tls", macro_use)]
|
#[cfg_attr(feature = "default-tls", macro_use)]
|
||||||
extern crate tokio_io;
|
extern crate tokio_io;
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
extern crate trust_dns_resolver;
|
extern crate trust_dns_resolver;
|
||||||
extern crate url;
|
extern crate url;
|
||||||
extern crate uuid;
|
extern crate uuid;
|
||||||
@@ -238,7 +240,7 @@ mod connect;
|
|||||||
mod connect_async;
|
mod connect_async;
|
||||||
mod body;
|
mod body;
|
||||||
mod client;
|
mod client;
|
||||||
#[cfg(not(any(target_os = "android", windows)))]
|
#[cfg(feature = "trust-dns")]
|
||||||
mod dns;
|
mod dns;
|
||||||
mod into_url;
|
mod into_url;
|
||||||
mod proxy;
|
mod proxy;
|
||||||
|
|||||||
Reference in New Issue
Block a user