diff --git a/bin/named/config.c b/bin/named/config.c index fbd2f2126c..d24e4f8a26 100644 --- a/bin/named/config.c +++ b/bin/named/config.c @@ -175,7 +175,7 @@ options {\n\ #if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2) " geoip-use-ecs yes;\n" #endif -" lame-ttl 600;\n" +" lame-ttl 0;\n" #ifdef HAVE_LMDB " lmdb-mapsize 32M;\n" #endif diff --git a/bin/named/server.c b/bin/named/server.c index 6ff95e3bcc..9826588e6d 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -3987,8 +3987,12 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, result = ns_config_get(maps, "lame-ttl", &obj); INSIST(result == ISC_R_SUCCESS); lame_ttl = cfg_obj_asuint32(obj); - if (lame_ttl > 1800) - lame_ttl = 1800; + if (lame_ttl > 0) { + cfg_obj_log(obj, ns_g_lctx, ISC_LOG_WARNING, + "disabling lame cache despite lame-ttl > 0 as it " + "may cause performance issues"); + lame_ttl = 0; + } dns_resolver_setlamettl(view->resolver, lame_ttl); /* diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 8175f7918b..b34cb12b73 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -8489,18 +8489,20 @@ resquery_response(isc_task_t *task, isc_event_t *event) { /* * Is the server lame? */ - if (res->lame_ttl != 0 && !ISFORWARDER(query->addrinfo) && - is_lame(fctx, rmessage)) { + if (!ISFORWARDER(query->addrinfo) && is_lame(fctx, rmessage)) { inc_stats(res, dns_resstatscounter_lame); log_lame(fctx, query->addrinfo); - result = dns_adb_marklame(fctx->adb, query->addrinfo, - &fctx->name, fctx->type, - now + res->lame_ttl); - if (result != ISC_R_SUCCESS) - isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER, - DNS_LOGMODULE_RESOLVER, ISC_LOG_ERROR, - "could not mark server as lame: %s", - isc_result_totext(result)); + if (res->lame_ttl != 0) { + result = dns_adb_marklame(fctx->adb, query->addrinfo, + &fctx->name, fctx->type, + now + res->lame_ttl); + if (result != ISC_R_SUCCESS) { + isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER, + DNS_LOGMODULE_RESOLVER, ISC_LOG_ERROR, + "could not mark server as lame: %s", + isc_result_totext(result)); + } + } broken_server = DNS_R_LAME; keep_trying = true; FCTXTRACE("lame server");