Merge branch '3478-dig-lookup-reference-counting-bug' into 'main'

DiG: fix lookup reference counting bug

Closes #3478

See merge request isc-projects/bind9!6635
This commit is contained in:
Arаm Sаrgsyаn 2022-08-08 11:42:53 +00:00
commit 82a71a1601
3 changed files with 12 additions and 1 deletions

View file

@ -1,3 +1,6 @@
5935. [bug] Fix DiG lookup reference counting bug, which could
be observed in NSSEARCH mode. [GL #3478]
5934. [func] Improve fetches-per-zone fetch limit logging to log
the final allowed and spilled values of the fetch
counters before the counter object gets destroyed.

View file

@ -1824,11 +1824,19 @@ clear_current_lookup(void) {
return;
}
if (lookup->cleared) {
debug("current_lookup is already cleared");
return;
}
if (ISC_LIST_HEAD(lookup->q) != NULL) {
debug("still have a worker");
return;
}
lookup->cleared = true;
debug("lookup cleared");
lookup_detach(&lookup);
}

View file

@ -105,7 +105,7 @@ typedef struct dig_searchlist dig_searchlist_t;
struct dig_lookup {
unsigned int magic;
isc_refcount_t references;
bool aaonly, adflag, badcookie, besteffort, cdflag, comments,
bool aaonly, adflag, badcookie, besteffort, cdflag, cleared, comments,
dns64prefix, dnssec, doing_xfr, done_as_is, ednsneg, expandaaaa,
expire, header_only, identify, /*%< Append an "on server <foo>"
message */