From 0846ddd9eb79eeb0f93535ad65c75670f026941b Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Sat, 9 Apr 2022 15:36:32 +0200 Subject: [PATCH] core: dns cache - option to set local ttl to overwrite the global value --- src/core/dns_cache.c | 17 ++++++++++++----- src/core/dns_cache.h | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/core/dns_cache.c b/src/core/dns_cache.c index 58247265ebb..d6826f0707b 100644 --- a/src/core/dns_cache.c +++ b/src/core/dns_cache.c @@ -88,12 +88,15 @@ struct t_dns_cache_stats* dns_cache_stats=0; #define LOCK_DNS_HASH() lock_get(dns_hash_lock) #define UNLOCK_DNS_HASH() lock_release(dns_hash_lock) +static int _dns_local_ttl = 0; + #define FIX_TTL(t) \ - (((t)cfg_get(core, core_cfg, dns_cache_max_ttl))? \ - cfg_get(core, core_cfg, dns_cache_max_ttl): \ - (t))) + ((_dns_local_ttl>0)?_dns_local_ttl: \ + (((t)cfg_get(core, core_cfg, dns_cache_max_ttl))? \ + cfg_get(core, core_cfg, dns_cache_max_ttl): \ + (t)))) struct dns_hash_head{ @@ -132,6 +135,10 @@ static const char* dns_str_errors[]={ }; +void dns_set_local_ttl(int ttl) +{ + _dns_local_ttl = ttl; +} /* param: err (negative error number) */ const char* dns_strerror(int err) diff --git a/src/core/dns_cache.h b/src/core/dns_cache.h index 0ec919f2d24..f8ae153a30b 100644 --- a/src/core/dns_cache.h +++ b/src/core/dns_cache.h @@ -374,5 +374,6 @@ int dns_cache_delete_single_record(unsigned short type, str *value, int flags); +void dns_set_local_ttl(int ttl); #endif