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:
		| @@ -69,6 +69,7 @@ struct Config { | |||||||
|     referer: bool, |     referer: bool, | ||||||
|     timeout: Option<Duration>, |     timeout: Option<Duration>, | ||||||
|     tls: TlsConnectorBuilder, |     tls: TlsConnectorBuilder, | ||||||
|  |     dns_threads: usize, | ||||||
| } | } | ||||||
|  |  | ||||||
| impl ClientBuilder { | impl ClientBuilder { | ||||||
| @@ -84,6 +85,7 @@ impl ClientBuilder { | |||||||
|                     referer: true, |                     referer: true, | ||||||
|                     timeout: None, |                     timeout: None, | ||||||
|                     tls: tls_connector_builder, |                     tls: tls_connector_builder, | ||||||
|  |                     dns_threads: 4, | ||||||
|                 }), |                 }), | ||||||
|                 err: None, |                 err: None, | ||||||
|             }, |             }, | ||||||
| @@ -116,7 +118,7 @@ impl ClientBuilder { | |||||||
|  |  | ||||||
|         let proxies = Arc::new(config.proxies); |         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 { |         if !config.hostname_verification { | ||||||
|             connector.danger_disable_hostname_verification(); |             connector.danger_disable_hostname_verification(); | ||||||
|         } |         } | ||||||
| @@ -237,6 +239,15 @@ impl ClientBuilder { | |||||||
|         } |         } | ||||||
|         self |         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> { | 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>; | 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 { | impl Client { | ||||||
|     /// Constructs a new `Client`. |     /// Constructs a new `Client`. | ||||||
|     /// |     /// | ||||||
|   | |||||||
| @@ -22,8 +22,8 @@ pub struct Connector { | |||||||
| } | } | ||||||
|  |  | ||||||
| impl Connector { | impl Connector { | ||||||
|     pub fn new(tls: TlsConnector, proxies: Arc<Vec<Proxy>>, handle: &Handle) -> Connector { |     pub fn new(threads: usize, tls: TlsConnector, proxies: Arc<Vec<Proxy>>, handle: &Handle) -> Connector { | ||||||
|         let mut http = HttpConnector::new(4, handle); |         let mut http = HttpConnector::new(threads, handle); | ||||||
|         http.enforce_http(false); |         http.enforce_http(false); | ||||||
|         let https = HttpsConnector::from((http, tls.clone())); |         let https = HttpsConnector::from((http, tls.clone())); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user