From: Hunts Chen Date: Thu, 14 Jul 2022 17:16:13 +0000 (-0700) Subject: Avoid treat normal hosts as unresponsive servers X-Git-Tag: release-1.16.2~8^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F714%2Fhead;p=thirdparty%2Funbound.git Avoid treat normal hosts as unresponsive servers This is a fix for issue #713 When infra-keep-probing is on, all hosts with expired entries were treated as unresponsive servers and thus causing problems (see #713). This commit change that, so that normal hosts with expired entries are treated as unknown servers. --- diff --git a/services/cache/infra.c b/services/cache/infra.c index 252e1e288..45fc7708f 100644 --- a/services/cache/infra.c +++ b/services/cache/infra.c @@ -721,21 +721,20 @@ infra_get_lame_rtt(struct infra_cache* infra, else *rtt = USEFUL_SERVER_TOP_TIMEOUT-1000; } } + /* expired entry */ if(timenow > host->ttl) { - /* expired entry */ + lock_rw_unlock(&e->lock); + /* see if this can be a re-probe of an unresponsive server */ /* minus 1000 because that is outside of the RTTBAND, so * blacklisted servers stay blacklisted if this is chosen */ - if(host->rtt.rto >= USEFUL_SERVER_TOP_TIMEOUT || - infra->infra_keep_probing) { - lock_rw_unlock(&e->lock); + if(host->rtt.rto >= USEFUL_SERVER_TOP_TIMEOUT) { *rtt = USEFUL_SERVER_TOP_TIMEOUT-1000; *lame = 0; *dnsseclame = 0; *reclame = 0; return 1; } - lock_rw_unlock(&e->lock); return 0; } /* check lameness first */