2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-29 13:38:26 +00:00

2786. [bug] Additional could be promoted to answer. [RT #20663]

This commit is contained in:
Mark Andrews 2009-11-25 02:22:05 +00:00
parent 996f875de4
commit d0ca4e90e2
4 changed files with 24 additions and 13 deletions

View File

@ -1,3 +1,5 @@
2786. [bug] Additional could be promoted to answer. [RT #20663]
--- 9.7.0b3 released --- --- 9.7.0b3 released ---
2785. [bug] Revoked keys could fail to self-sign [RT #20652] 2785. [bug] Revoked keys could fail to self-sign [RT #20652]

View File

@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: query.c,v 1.333 2009/11/24 03:09:57 marka Exp $ */ /* $Id: query.c,v 1.334 2009/11/25 02:22:05 marka Exp $ */
/*! \file */ /*! \file */
@ -1160,7 +1160,8 @@ query_addadditional(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
goto cleanup; goto cleanup;
} }
result = dns_db_find(db, name, version, type, result = dns_db_find(db, name, version, type,
client->query.dboptions | DNS_DBFIND_GLUEOK, client->query.dboptions |
DNS_DBFIND_GLUEOK | DNS_DBFIND_ADDITIONALOK,
client->now, &node, fname, rdataset, client->now, &node, fname, rdataset,
sigrdataset); sigrdataset);
if (result == DNS_R_GLUE && if (result == DNS_R_GLUE &&
@ -1645,7 +1646,8 @@ query_addadditional2(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
goto try_glue; goto try_glue;
result = dns_db_find(db, name, version, type, result = dns_db_find(db, name, version, type,
client->query.dboptions | DNS_DBFIND_GLUEOK, client->query.dboptions |
DNS_DBFIND_GLUEOK | DNS_DBFIND_ADDITIONALOK,
client->now, &node, fname, NULL, NULL); client->now, &node, fname, NULL, NULL);
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
goto found; goto found;

View File

@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: db.h,v 1.100 2009/07/19 23:47:55 tbox Exp $ */ /* $Id: db.h,v 1.101 2009/11/25 02:22:05 marka Exp $ */
#ifndef DNS_DB_H #ifndef DNS_DB_H
#define DNS_DB_H 1 #define DNS_DB_H 1
@ -208,14 +208,15 @@ struct dns_db {
/*% /*%
* Options that can be specified for dns_db_find(). * Options that can be specified for dns_db_find().
*/ */
#define DNS_DBFIND_GLUEOK 0x01 #define DNS_DBFIND_GLUEOK 0x0001
#define DNS_DBFIND_VALIDATEGLUE 0x02 #define DNS_DBFIND_VALIDATEGLUE 0x0002
#define DNS_DBFIND_NOWILD 0x04 #define DNS_DBFIND_NOWILD 0x0004
#define DNS_DBFIND_PENDINGOK 0x08 #define DNS_DBFIND_PENDINGOK 0x0008
#define DNS_DBFIND_NOEXACT 0x10 #define DNS_DBFIND_NOEXACT 0x0010
#define DNS_DBFIND_FORCENSEC 0x20 #define DNS_DBFIND_FORCENSEC 0x0020
#define DNS_DBFIND_COVERINGNSEC 0x40 #define DNS_DBFIND_COVERINGNSEC 0x0040
#define DNS_DBFIND_FORCENSEC3 0x80 #define DNS_DBFIND_FORCENSEC3 0x0080
#define DNS_DBFIND_ADDITIONALOK 0x0100
/*@}*/ /*@}*/
/*@{*/ /*@{*/
@ -701,6 +702,10 @@ dns_db_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
* For cache databases, glue is any rdataset with a trust of * For cache databases, glue is any rdataset with a trust of
* dns_trust_glue. * dns_trust_glue.
* *
* \li If 'options' does not have #DNS_DBFIND_ADDITIONALOK set, then no
* additional records will be returned. Only caches can have
* rdataset with trust dns_trust_additional.
*
* \li If 'options' does not have #DNS_DBFIND_PENDINGOK set, then no * \li If 'options' does not have #DNS_DBFIND_PENDINGOK set, then no
* pending data will be returned. This option is only meaningful for * pending data will be returned. This option is only meaningful for
* cache databases. * cache databases.

View File

@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: rbtdb.c,v 1.289 2009/11/23 02:10:16 marka Exp $ */ /* $Id: rbtdb.c,v 1.290 2009/11/25 02:22:05 marka Exp $ */
/*! \file */ /*! \file */
@ -4664,6 +4664,8 @@ cache_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
* If we didn't find what we were looking for... * If we didn't find what we were looking for...
*/ */
if (found == NULL || if (found == NULL ||
(found->trust == dns_trust_additional &&
((options & DNS_DBFIND_ADDITIONALOK) == 0)) ||
(found->trust == dns_trust_glue && (found->trust == dns_trust_glue &&
((options & DNS_DBFIND_GLUEOK) == 0)) || ((options & DNS_DBFIND_GLUEOK) == 0)) ||
(DNS_TRUST_PENDING(found->trust) && (DNS_TRUST_PENDING(found->trust) &&