Take two of new semantics for ANY queries at zone cut points. Now doing

an ANY query at a zone cut point will return a delegation, except if
DNS_DBFIND_GLUEOK is set, in which case DNS_R_ZONECUT will be returned as
before.  Someday it would probably be a good idea to get rid of DNS_R_ZONECUT
entirely and just return DNS_R_GLUE in that case, but I was afraid to do
that now since it might break things.  These changes pass all system tests.
This commit is contained in:
Bob Halley 2001-05-15 05:35:27 +00:00
parent c209cc1ebd
commit 4e9d4ceadf
2 changed files with 7 additions and 8 deletions

View file

@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: db.h,v 1.65 2001/05/14 19:25:59 halley Exp $ */
/* $Id: db.h,v 1.66 2001/05/15 05:35:27 halley Exp $ */
#ifndef DNS_DB_H
#define DNS_DB_H 1
@ -712,8 +712,9 @@ dns_db_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
* The caller must take care not
* to return inappropriate glue
* to a client. This result can
* only occur if 'db' is a
* secure zone database.
* only occur if 'db' is a zone
* database and DNS_DBFIND_GLUEOK
* is set.
*
* DNS_R_DNAME The data requested is beneath
* a DNAME. node, foundname,

View file

@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: rbtdb.c,v 1.164 2001/05/15 03:52:31 gson Exp $ */
/* $Id: rbtdb.c,v 1.165 2001/05/15 05:35:24 halley Exp $ */
/*
* Principal Author: Bob Halley
@ -1889,8 +1889,7 @@ zone_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
at_zonecut = ISC_TRUE;
if ((search.options & DNS_DBFIND_GLUEOK) == 0
&& type != dns_rdatatype_nxt
&& type != dns_rdatatype_key
&& type != dns_rdatatype_any) {
&& type != dns_rdatatype_key) {
/*
* Glue is not OK, but any answer we
* could return would be glue. Return
@ -2053,8 +2052,7 @@ zone_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
if (type == dns_rdatatype_nxt ||
type == dns_rdatatype_key)
result = ISC_R_SUCCESS;
else if (type == dns_rdatatype_any &&
search.rbtdb->secure)
else if (type == dns_rdatatype_any)
result = DNS_R_ZONECUT;
else
result = DNS_R_GLUE;