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