diff --git a/lib/dns/include/dns/message.h b/lib/dns/include/dns/message.h index 191920ff7a..fdc018d543 100644 --- a/lib/dns/include/dns/message.h +++ b/lib/dns/include/dns/message.h @@ -36,7 +36,7 @@ * * How this beast works: * - * When a dns message is received in a buffer, dns_message_fromwire() is called + * When a dns message is received in a buffer, dns_message_parse() is called * on the memory region. Various items are checked including the format * of the message (if counts are right, if counts consume the entire sections, * and if sections consume the entire message) and known pseudo-RRs in the diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index 9cc2b25fb0..16c25e6ac5 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -1436,7 +1436,7 @@ free_rdataset(dns_rbtdb_t *rbtdb, isc_mem_t *mctx, rdatasetheader_t *rdataset) free_acachearray(mctx, rdataset, rdataset->additional_auth); free_acachearray(mctx, rdataset, rdataset->additional_glue); - if ((rdataset->attributes & RDATASET_ATTR_NONEXISTENT) != 0) + if (NONEXISTENT(rdataset)) size = sizeof(*rdataset); else size = dns_rdataslab_size((unsigned char *)rdataset, @@ -6123,32 +6123,36 @@ add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, rbtdb_version_t *rbtversion, /* * We're adding a negative cache entry. */ - for (topheader = rbtnode->data; - topheader != NULL; - topheader = topheader->next) { + if (covers == dns_rdatatype_any) { /* * If we're adding an negative cache entry * which covers all types (NXDOMAIN, - * NODATA(QTYPE=ANY)). + * NODATA(QTYPE=ANY)), * * We make all other data stale so that the * only rdataset that can be found at this * node is the negative cache entry. - * - * Otherwise look for any RRSIGs of the - * given type so they can be marked stale - * later. */ - if (covers == dns_rdatatype_any) { + for (topheader = rbtnode->data; + topheader != NULL; + topheader = topheader->next) + { set_ttl(rbtdb, topheader, 0); topheader->attributes |= RDATASET_ATTR_STALE; rbtnode->dirty = 1; - } else if (topheader->type == sigtype) - sigheader = topheader; - } - if (covers == dns_rdatatype_any) + } goto find_header; + } + /* + * Otherwise look for any RRSIGs of the given + * type so they can be marked stale later. + */ + for (topheader = rbtnode->data; + topheader != NULL; + topheader = topheader->next) + if (topheader->type == sigtype) + sigheader = topheader; negtype = RBTDB_RDATATYPE_VALUE(covers, 0); } else { /* @@ -8492,8 +8496,7 @@ rdatasetiter_next(dns_rdatasetiter_t *iterator) { * ANY and RRSIG queries for 0 TTL * rdatasets to work. */ - if ((header->attributes & - RDATASET_ATTR_NONEXISTENT) != 0 || + if (NONEXISTENT(header) || (now != 0 && now > header->rdh_ttl)) header = NULL; break; diff --git a/lib/dns/rdata.c b/lib/dns/rdata.c index 2788cba9a5..8040703741 100644 --- a/lib/dns/rdata.c +++ b/lib/dns/rdata.c @@ -2245,7 +2245,7 @@ fromtext_error(void (*callback)(dns_rdatacallbacks_t *, const char *, ...), dns_rdatatype_t dns_rdata_covers(dns_rdata_t *rdata) { - if (rdata->type == 46) + if (rdata->type == dns_rdatatype_rrsig) return (covers_rrsig(rdata)); return (covers_sig(rdata)); }