+2786. [bug] Additional could be promoted to answer. [RT #20663]
+
2784. [bug] TC was not always being set when required glue was
dropped. [RT #20655]
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: query.c,v 1.298.48.18 2009/11/24 03:15:54 marka Exp $ */
+/* $Id: query.c,v 1.298.48.19 2009/11/25 02:32:05 marka Exp $ */
/*! \file */
goto cleanup;
}
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,
sigrdataset);
if (result == DNS_R_GLUE &&
goto try_glue;
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);
if (result == ISC_R_SUCCESS)
goto found;
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: db.h,v 1.89.128.5 2009/01/19 00:01:11 marka Exp $ */
+/* $Id: db.h,v 1.89.128.6 2009/11/25 02:32:05 marka Exp $ */
#ifndef DNS_DB_H
#define DNS_DB_H 1
/*%
* Options that can be specified for dns_db_find().
*/
-#define DNS_DBFIND_GLUEOK 0x01
-#define DNS_DBFIND_VALIDATEGLUE 0x02
-#define DNS_DBFIND_NOWILD 0x04
-#define DNS_DBFIND_PENDINGOK 0x08
-#define DNS_DBFIND_NOEXACT 0x10
-#define DNS_DBFIND_FORCENSEC 0x20
-#define DNS_DBFIND_COVERINGNSEC 0x40
+#define DNS_DBFIND_GLUEOK 0x0001
+#define DNS_DBFIND_VALIDATEGLUE 0x0002
+#define DNS_DBFIND_NOWILD 0x0004
+#define DNS_DBFIND_PENDINGOK 0x0008
+#define DNS_DBFIND_NOEXACT 0x0010
+#define DNS_DBFIND_FORCENSEC 0x0020
+#define DNS_DBFIND_COVERINGNSEC 0x0040
+#if 0
+#define DNS_DBFIND_FORCENSEC3 0x0080 /* BIND 9.6.0 and later. */
+#endif
+#define DNS_DBFIND_ADDITIONALOK 0x0100
/*@}*/
/*@{*/
* For cache databases, glue is any rdataset with a trust of
* 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
* pending data will be returned. This option is only meaningful for
* cache databases.
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: rbtdb.c,v 1.248.12.19 2009/11/18 00:08:59 marka Exp $ */
+/* $Id: rbtdb.c,v 1.248.12.20 2009/11/25 02:32:05 marka Exp $ */
/*! \file */
* If we didn't find what we were looking for...
*/
if (found == NULL ||
+ (found->trust == dns_trust_additional &&
+ ((options & DNS_DBFIND_ADDITIONALOK) == 0)) ||
(found->trust == dns_trust_glue &&
((options & DNS_DBFIND_GLUEOK) == 0)) ||
(DNS_TRUST_PENDING(found->trust) &&