Fix alternative resolver minimum TTL configuration. (fixes #176)
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
@@ -34,16 +34,19 @@ type ResolvingResult = Result<Addrs, Box<dyn std::error::Error + Send + Sync>>;
|
|||||||
|
|
||||||
impl Resolver {
|
impl Resolver {
|
||||||
pub(super) fn build(server: &Arc<Server>, cache: Arc<Cache>) -> Result<Arc<Self>> {
|
pub(super) fn build(server: &Arc<Server>, cache: Arc<Cache>) -> Result<Arc<Self>> {
|
||||||
|
let config = &server.config;
|
||||||
|
|
||||||
// Create the primary resolver.
|
// Create the primary resolver.
|
||||||
let (conf, opts) = Self::configure(server)?;
|
let (conf, mut opts) = Self::configure(server)?;
|
||||||
|
opts.negative_min_ttl = Some(Duration::from_secs(config.dns_min_ttl_nxdomain));
|
||||||
|
opts.positive_min_ttl = Some(Duration::from_secs(config.dns_min_ttl));
|
||||||
|
opts.cache_size = config.dns_cache_entries.try_into()?;
|
||||||
let resolver = Self::create(server, conf.clone(), opts.clone())?;
|
let resolver = Self::create(server, conf.clone(), opts.clone())?;
|
||||||
|
|
||||||
// Create the passthru resolver with modified options.
|
// Create the passthru resolver with modified options.
|
||||||
let (conf, mut opts) = (conf, opts);
|
let (conf, mut opts) = (conf, opts);
|
||||||
opts.negative_min_ttl = None;
|
opts.negative_min_ttl = Some(Duration::ZERO);
|
||||||
opts.negative_max_ttl = None;
|
opts.positive_min_ttl = Some(Duration::ZERO);
|
||||||
opts.positive_min_ttl = None;
|
|
||||||
opts.positive_max_ttl = None;
|
|
||||||
opts.cache_size = ResolverOpts::default().cache_size;
|
opts.cache_size = ResolverOpts::default().cache_size;
|
||||||
let passthru = Arc::new(Passthru {
|
let passthru = Arc::new(Passthru {
|
||||||
resolver: Self::create(server, conf, opts)?,
|
resolver: Self::create(server, conf, opts)?,
|
||||||
@@ -111,10 +114,7 @@ impl Resolver {
|
|||||||
fn configure_opts(server: &Arc<Server>, mut opts: ResolverOpts) -> ResolverOpts {
|
fn configure_opts(server: &Arc<Server>, mut opts: ResolverOpts) -> ResolverOpts {
|
||||||
let config = &server.config;
|
let config = &server.config;
|
||||||
|
|
||||||
opts.cache_size = config.dns_cache_entries as usize;
|
|
||||||
opts.negative_min_ttl = Some(Duration::from_secs(config.dns_min_ttl_nxdomain));
|
|
||||||
opts.negative_max_ttl = Some(Duration::from_secs(60 * 60 * 24 * 30));
|
opts.negative_max_ttl = Some(Duration::from_secs(60 * 60 * 24 * 30));
|
||||||
opts.positive_min_ttl = Some(Duration::from_secs(config.dns_min_ttl));
|
|
||||||
opts.positive_max_ttl = Some(Duration::from_secs(60 * 60 * 24 * 7));
|
opts.positive_max_ttl = Some(Duration::from_secs(60 * 60 * 24 * 7));
|
||||||
opts.timeout = Duration::from_secs(config.dns_timeout);
|
opts.timeout = Duration::from_secs(config.dns_timeout);
|
||||||
opts.attempts = config.dns_attempts as usize;
|
opts.attempts = config.dns_attempts as usize;
|
||||||
|
|||||||
Reference in New Issue
Block a user