mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 04:30:00 -04:00
if GLUEOK is set, and glue is found in a zone DB, don't check the cache
EXPERIMENT: when DNS_DB_GLUEOK is set, dns_view_find() will now return glue if it is found it a local zone database, without checking to see if a better answer has been cached previously.
This commit is contained in:
parent
9227b82e71
commit
461b9a0442
2 changed files with 6 additions and 24 deletions
|
|
@ -548,8 +548,11 @@ dns_view_find(dns_view_t *view, const dns_name_t *name, dns_rdatatype_t type,
|
|||
* Notes:
|
||||
*
|
||||
*\li See the description of dns_db_find() for information about 'options'.
|
||||
* If the caller sets #DNS_DBFIND_GLUEOK, it must ensure that 'name'
|
||||
* and 'type' are appropriate for glue retrieval.
|
||||
|
||||
*\li If the caller sets #DNS_DBFIND_GLUEOK, it must ensure that 'name'
|
||||
* and 'type' are appropriate for glue retrieval. Glue found in a
|
||||
* zone database will be returned without checking the cache for a
|
||||
* better answer.
|
||||
*
|
||||
*\li If 'now' is zero, then the current time will be used.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -929,29 +929,8 @@ db_find:
|
|||
*/
|
||||
result = ISC_R_NOTFOUND;
|
||||
} else if (result == DNS_R_GLUE) {
|
||||
if (view->cachedb != NULL && !is_staticstub_zone) {
|
||||
/*
|
||||
* We found an answer, but the cache may be better.
|
||||
* Remember what we've got and go look in the cache.
|
||||
*/
|
||||
is_cache = true;
|
||||
dns_rdataset_clone(rdataset, &zrdataset);
|
||||
dns_rdataset_disassociate(rdataset);
|
||||
if (sigrdataset != NULL &&
|
||||
dns_rdataset_isassociated(sigrdataset))
|
||||
{
|
||||
dns_rdataset_clone(sigrdataset, &zsigrdataset);
|
||||
dns_rdataset_disassociate(sigrdataset);
|
||||
}
|
||||
dns_db_attach(db, &zdb);
|
||||
dns_db_attachnode(zdb, node, &znode);
|
||||
dns_db_detachnode(db, &node);
|
||||
dns_db_detach(&db);
|
||||
dns_db_attach(view->cachedb, &db);
|
||||
goto db_find;
|
||||
}
|
||||
/*
|
||||
* Otherwise, the glue is the best answer.
|
||||
* Glue is the answer wanted.
|
||||
*/
|
||||
result = ISC_R_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue