mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-27 12:13:20 -04:00
Fix "CNAME and other data" detection
prio_type was being used in the wrong place to optimize cname_and_other.
We have to first exclude and accepted types and we also have to
determine that the record exists before we can check if we are at
a point where a later CNAME cannot appear.
(cherry picked from commit 5e49a9e4ae)
This commit is contained in:
parent
4adf01503a
commit
7111f5e4c2
1 changed files with 10 additions and 8 deletions
|
|
@ -6145,14 +6145,6 @@ cname_and_other_data(dns_rbtnode_t *node, rbtdb_serial_t serial) {
|
|||
*/
|
||||
for (header = node->data; header != NULL; header = header_next) {
|
||||
header_next = header->next;
|
||||
if (!prio_type(header->type)) {
|
||||
/*
|
||||
* CNAME is in the priority list, so if we are done
|
||||
* with the priority list, we know there will not be
|
||||
* CNAME, so we are safe to skip the rest of the types.
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
if (header->type == dns_rdatatype_cname) {
|
||||
/*
|
||||
* Look for an active extant CNAME.
|
||||
|
|
@ -6208,6 +6200,16 @@ cname_and_other_data(dns_rbtnode_t *node, rbtdb_serial_t serial) {
|
|||
}
|
||||
} while (header != NULL);
|
||||
if (header != NULL) {
|
||||
if (!prio_type(header->type)) {
|
||||
/*
|
||||
* CNAME is in the priority
|
||||
* list, so if we are done with
|
||||
* priority types, we know there
|
||||
* will not be a CNAME, and are
|
||||
* safe to skip the rest.
|
||||
*/
|
||||
return cname;
|
||||
}
|
||||
other_data = true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue