Merge pull request #209 from osa1/dns_threads_config

Implement option to set num of DNS threads in async ClientBuilder
This commit is contained in:
Sean McArthur
2017-10-09 12:56:44 -07:00
committed by GitHub
2 changed files with 14 additions and 9 deletions

View File

@@ -69,6 +69,7 @@ struct Config {
referer: bool,
timeout: Option<Duration>,
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<Config>, err: &Option<::Error>) -> Option<&'a mut Config> {
@@ -249,12 +260,6 @@ fn config_mut<'a>(config: &'a mut Option<Config>, err: &Option<::Error>) -> Opti
type HyperClient = ::hyper::Client<Connector>;
fn create_hyper_client(tls: TlsConnector, proxies: Arc<Vec<Proxy>>, handle: &Handle) -> HyperClient {
::hyper::Client::configure()
.connector(Connector::new(tls, proxies, handle))
.build(handle)
}
impl Client {
/// Constructs a new `Client`.
///

View File

@@ -22,8 +22,8 @@ pub struct Connector {
}
impl Connector {
pub fn new(tls: TlsConnector, proxies: Arc<Vec<Proxy>>, handle: &Handle) -> Connector {
let mut http = HttpConnector::new(4, handle);
pub fn new(threads: usize, tls: TlsConnector, proxies: Arc<Vec<Proxy>>, handle: &Handle) -> Connector {
let mut http = HttpConnector::new(threads, handle);
http.enforce_http(false);
let https = HttpsConnector::from((http, tls.clone()));