diff --git a/src/async_impl/client.rs b/src/async_impl/client.rs index 5d22c58..0a74497 100644 --- a/src/async_impl/client.rs +++ b/src/async_impl/client.rs @@ -69,6 +69,7 @@ struct Config { referer: bool, timeout: Option, tls: TlsConnectorBuilder, + dns_threads: usize, } impl ClientBuilder { @@ -84,6 +85,7 @@ impl ClientBuilder { referer: true, timeout: None, tls: tls_connector_builder, + dns_threads: 4, }), err: None, }, @@ -116,7 +118,7 @@ impl ClientBuilder { let proxies = Arc::new(config.proxies); - let mut connector = Connector::new(tls, proxies.clone(), handle); + let mut connector = Connector::new(config.dns_threads, tls, proxies.clone(), handle); if !config.hostname_verification { connector.danger_disable_hostname_verification(); } @@ -237,6 +239,15 @@ impl ClientBuilder { } self } + + /// Set number of DNS threads. + #[inline] + pub fn dns_threads(&mut self, threads: usize) -> &mut ClientBuilder { + if let Some(config) = config_mut(&mut self.config, &self.err) { + config.dns_threads = threads; + } + self + } } fn config_mut<'a>(config: &'a mut Option, err: &Option<::Error>) -> Option<&'a mut Config> { @@ -249,12 +260,6 @@ fn config_mut<'a>(config: &'a mut Option, err: &Option<::Error>) -> Opti type HyperClient = ::hyper::Client; -fn create_hyper_client(tls: TlsConnector, proxies: Arc>, handle: &Handle) -> HyperClient { - ::hyper::Client::configure() - .connector(Connector::new(tls, proxies, handle)) - .build(handle) -} - impl Client { /// Constructs a new `Client`. /// diff --git a/src/connect.rs b/src/connect.rs index 6db6ef9..adec0fb 100644 --- a/src/connect.rs +++ b/src/connect.rs @@ -22,8 +22,8 @@ pub struct Connector { } impl Connector { - pub fn new(tls: TlsConnector, proxies: Arc>, handle: &Handle) -> Connector { - let mut http = HttpConnector::new(4, handle); + pub fn new(threads: usize, tls: TlsConnector, proxies: Arc>, handle: &Handle) -> Connector { + let mut http = HttpConnector::new(threads, handle); http.enforce_http(false); let https = HttpsConnector::from((http, tls.clone()));