mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-13 21:09:59 -04:00
Don't use view->resolver directly when priming in dns_view_find()
When starting priming from dns_view_find(), the dns_view shutdown could be initiated by different thread, detaching from the resolver. Use dns_view_getresolver() to attach to the resolver under view->lock, so we don't try to call dns_resolver_prime() with NULL pointer. There are more accesses to view->resolver, (and also view->adb and view->requestmgr that suffer from the same problem) in the dns_view module, but they are all done in exclusive mode or under a view->lock.
This commit is contained in:
parent
54a425ab57
commit
a8ba240325
1 changed files with 8 additions and 3 deletions
|
|
@ -1037,9 +1037,14 @@ db_find:
|
|||
* We just used a hint. Let the resolver know it
|
||||
* should consider priming.
|
||||
*/
|
||||
dns_resolver_prime(view->resolver);
|
||||
dns_db_attach(view->hints, &db);
|
||||
result = DNS_R_HINT;
|
||||
dns_resolver_t *res = NULL;
|
||||
result = dns_view_getresolver(view, &res);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
dns_resolver_prime(res);
|
||||
dns_db_attach(view->hints, &db);
|
||||
dns_resolver_detach(&res);
|
||||
result = DNS_R_HINT;
|
||||
}
|
||||
} else if (result == DNS_R_NXRRSET) {
|
||||
dns_db_attach(view->hints, &db);
|
||||
result = DNS_R_HINTNXRRSET;
|
||||
|
|
|
|||
Loading…
Reference in a new issue