PenaltyExcessCharacter: 100
Standard: Cpp11
ContinuationIndentWidth: 8
-ForEachMacros: [ 'cds_lfs_for_each', 'cds_lfs_for_each_safe', 'cds_list_for_each_entry_safe', 'ISC_LIST_FOREACH', 'ISC_LIST_FOREACH_SAFE', 'ISC_LIST_FOREACH_REV', 'ISC_LIST_FOREACH_REV_SAFE', 'MSG_SECTION_FOREACH', 'DNS_RDATASET_FOREACH', 'CFG_LIST_FOREACH' ]
+ForEachMacros: [ 'cds_lfs_for_each', 'cds_lfs_for_each_safe', 'cds_list_for_each_entry_safe', 'ISC_LIST_FOREACH', 'ISC_LIST_FOREACH_SAFE', 'ISC_LIST_FOREACH_REV', 'ISC_LIST_FOREACH_REV_SAFE', 'MSG_SECTION_FOREACH', 'DNS_DBITERATOR_FOREACH', 'DNS_RDATASET_FOREACH', 'DNS_RDATASETITER_FOREACH', 'CFG_LIST_FOREACH' ]
RemoveParentheses: ReturnStatement
RemoveSemicolon: true
static void
dumpnode(dns_name_t *name, dns_dbnode_t *node) {
- dns_rdataset_t rds;
dns_rdatasetiter_t *iter = NULL;
isc_buffer_t *buffer = NULL;
isc_region_t r;
result = dns_db_allrdatasets(gdb, node, gversion, 0, 0, &iter);
check_result(result, "dns_db_allrdatasets");
- dns_rdataset_init(&rds);
-
isc_buffer_allocate(mctx, &buffer, bufsize);
- for (result = dns_rdatasetiter_first(iter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iter))
- {
+ DNS_RDATASETITER_FOREACH (iter) {
+ dns_rdataset_t rds = DNS_RDATASET_INIT;
dns_rdatasetiter_current(iter, &rds);
if (rds.type != dns_rdatatype_rrsig &&
rdsiter = NULL;
result = dns_db_allrdatasets(gdb, node, gversion, 0, 0, &rdsiter);
check_result(result, "dns_db_allrdatasets()");
- result = dns_rdatasetiter_first(rdsiter);
- while (result == ISC_R_SUCCESS) {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, &rdataset);
/* If this is a RRSIG set, skip it. */
skip:
dns_rdataset_disassociate(&rdataset);
- result = dns_rdatasetiter_next(rdsiter);
- }
- if (result != ISC_R_NOMORE) {
- fatal("rdataset iteration for name '%s' failed: %s", namestr,
- isc_result_totext(result));
}
dns_rdatasetiter_destroy(&rdsiter);
dns_rdatasetiter_t *rdsiter2 = NULL;
bool active = false;
isc_result_t result;
- dns_rdataset_t rdataset;
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatatype_t type;
dns_rdatatype_t covers;
bool found;
- dns_rdataset_init(&rdataset);
result = dns_db_allrdatasets(gdb, node, gversion, 0, 0, &rdsiter);
check_result(result, "dns_db_allrdatasets()");
- result = dns_rdatasetiter_first(rdsiter);
- while (result == ISC_R_SUCCESS) {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, &rdataset);
- if (rdataset.type != dns_rdatatype_nsec &&
- rdataset.type != dns_rdatatype_nsec3 &&
- rdataset.type != dns_rdatatype_rrsig)
+ dns_rdatatype_t t = rdataset.type;
+ dns_rdataset_disassociate(&rdataset);
+
+ if (t != dns_rdatatype_nsec && t != dns_rdatatype_nsec3 &&
+ t != dns_rdatatype_rrsig)
{
active = true;
- }
- dns_rdataset_disassociate(&rdataset);
- if (!active) {
- result = dns_rdatasetiter_next(rdsiter);
- } else {
- result = ISC_R_NOMORE;
+ break;
}
}
- if (result != ISC_R_NOMORE) {
- fatal("rdataset iteration failed: %s",
- isc_result_totext(result));
- }
if (!active && nsec_datatype == dns_rdatatype_nsec) {
/*%
* The node is empty of everything but NSEC / RRSIG records.
*/
- for (result = dns_rdatasetiter_first(rdsiter);
- result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, &rdataset);
result = dns_db_deleterdataset(gdb, node, gversion,
rdataset.type,
check_result(result, "dns_db_deleterdataset()");
dns_rdataset_disassociate(&rdataset);
}
- if (result != ISC_R_NOMORE) {
- fatal("rdataset iteration failed: %s",
- isc_result_totext(result));
- }
} else {
/*
* Delete RRSIGs for types that no longer exist.
result = dns_db_allrdatasets(gdb, node, gversion, 0, 0,
&rdsiter2);
check_result(result, "dns_db_allrdatasets()");
- for (result = dns_rdatasetiter_first(rdsiter);
- result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, &rdataset);
type = rdataset.type;
covers = rdataset.covers;
continue;
}
found = false;
- for (result = dns_rdatasetiter_first(rdsiter2);
- !found && result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter2))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter2) {
dns_rdatasetiter_current(rdsiter2, &rdataset);
if (rdataset.type == covers) {
found = true;
dns_rdataset_disassociate(&rdataset);
}
if (!found) {
- if (result != ISC_R_NOMORE) {
- fatal("rdataset iteration failed: %s",
- isc_result_totext(result));
- }
result = dns_db_deleterdataset(
gdb, node, gversion, type, covers);
check_result(result, "dns_db_deleterdataset("
"rrsig)");
- } else if (result != ISC_R_NOMORE &&
- result != ISC_R_SUCCESS)
- {
+ } else if (result != ISC_R_SUCCESS) {
fatal("rdataset iteration failed: %s",
isc_result_totext(result));
}
}
- if (result != ISC_R_NOMORE) {
- fatal("rdataset iteration failed: %s",
- isc_result_totext(result));
- }
dns_rdatasetiter_destroy(&rdsiter2);
}
dns_rdatasetiter_destroy(&rdsiter);
isc_result_t result;
dns_rdatatype_t type, covers;
dns_rdatasetiter_t *rdsiter = NULL;
- dns_rdataset_t rdataset;
-
- dns_rdataset_init(&rdataset);
/*
* Delete any records of the given type at the apex.
*/
result = dns_db_allrdatasets(gdb, node, gversion, 0, 0, &rdsiter);
check_result(result, "dns_db_allrdatasets()");
- for (result = dns_rdatasetiter_first(rdsiter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(rdsiter, &rdataset);
type = rdataset.type;
covers = rdataset.covers;
isc_result_t result;
dns_rdatatype_t type, covers;
dns_rdatasetiter_t *rdsiter = NULL;
- dns_rdataset_t rdataset;
- dns_rdataset_init(&rdataset);
result = dns_db_allrdatasets(gdb, node, gversion, 0, 0, &rdsiter);
check_result(result, "dns_db_allrdatasets()");
- for (result = dns_rdatasetiter_first(rdsiter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(rdsiter, &rdataset);
type = rdataset.type;
covers = rdataset.covers;
dns_dbiterator_t *dbiter = NULL;
dns_dbnode_t *node = NULL, *nextnode = NULL;
dns_fixedname_t fname, fnextname, fzonecut;
- dns_name_t *name, *nextname, *zonecut;
- dns_rdataset_t rdataset;
+ dns_name_t *name = dns_fixedname_initname(&fname);
+ dns_name_t *nextname = dns_fixedname_initname(&fnextname);
+ dns_name_t *zonecut = NULL;
dns_rdatasetiter_t *rdsiter = NULL;
dns_rdatatype_t type, covers;
bool done = false;
isc_result_t result;
uint32_t nsttl = 0;
- dns_rdataset_init(&rdataset);
- name = dns_fixedname_initname(&fname);
- nextname = dns_fixedname_initname(&fnextname);
- zonecut = NULL;
-
/*
* Remove any NSEC3 chains.
*/
result = dns_db_createiterator(gdb, DNS_DB_NSEC3ONLY, &dbiter);
check_result(result, "dns_db_createiterator()");
- for (result = dns_dbiterator_first(dbiter); result == ISC_R_SUCCESS;
- result = dns_dbiterator_next(dbiter))
- {
+ DNS_DBITERATOR_FOREACH (dbiter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
result = dns_dbiterator_current(dbiter, &node, name);
check_dns_dbiterator_current(result);
result = dns_db_allrdatasets(gdb, node, gversion, 0, 0,
&rdsiter);
check_result(result, "dns_db_allrdatasets()");
- for (result = dns_rdatasetiter_first(rdsiter);
- result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, &rdataset);
type = rdataset.type;
covers = rdataset.covers;
dns_rdatasetiter_t *rdsiter = NULL;
dns_diff_t add, del;
dns_dbnode_t *node = NULL;
- dns_rdataset_t rdataset;
dns_fixedname_t fname;
- dns_name_t *name;
+ dns_name_t *name = dns_fixedname_initname(&fname);
dns_diff_init(mctx, &add);
dns_diff_init(mctx, &del);
- name = dns_fixedname_initname(&fname);
- dns_rdataset_init(&rdataset);
result = dns_db_createiterator(gdb, 0, &dbiter);
check_result(result, "dns_db_createiterator()");
- for (result = dns_dbiterator_first(dbiter); result == ISC_R_SUCCESS;
- result = dns_dbiterator_next(dbiter))
- {
+ DNS_DBITERATOR_FOREACH (dbiter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
result = dns_dbiterator_current(dbiter, &node, name);
check_dns_dbiterator_current(result);
result = dns_db_allrdatasets(gdb, node, gversion, 0, 0,
&rdsiter);
check_result(result, "dns_db_allrdatasets()");
- for (result = dns_rdatasetiter_first(rdsiter);
- result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, &rdataset);
rrset_cleanup(name, &rdataset, &add, &del);
dns_rdataset_disassociate(&rdataset);
}
- if (result != ISC_R_NOMORE) {
- fatal("rdatasets iteration failed.");
- }
dns_rdatasetiter_destroy(&rdsiter);
dns_db_detachnode(gdb, &node);
}
- if (result != ISC_R_NOMORE) {
- fatal("zone iteration failed.");
- }
result = dns_diff_applysilently(&del, gdb, gversion);
check_result(result, "dns_diff_applysilently");
result = dns_db_createiterator(gdb, DNS_DB_NSEC3ONLY, &dbiter);
check_result(result, "dns_db_createiterator()");
- for (result = dns_dbiterator_first(dbiter); result == ISC_R_SUCCESS;
- result = dns_dbiterator_next(dbiter))
- {
+ DNS_DBITERATOR_FOREACH (dbiter) {
result = dns_dbiterator_current(dbiter, &node, name);
check_dns_dbiterator_current(result);
nsec3clean(name, node, hashalg, iterations, salt, salt_len,
return result;
}
- for (result = dns_rdatasetiter_first(iter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iter))
- {
- dns_rdataset_t rdataset;
- dns_rdataset_init(&rdataset);
+ DNS_RDATASETITER_FOREACH (iter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(iter, &rdataset);
result = dns_db_deleterdataset(db, node, NULL, rdataset.type,
}
}
- if (result == ISC_R_NOMORE) {
- result = ISC_R_SUCCESS;
- }
-
dns_rdatasetiter_destroy(&iter);
return result;
}
}
dns_rdataset_init(&rdataset);
- result = dns_rdatasetiter_first(rdsiter);
- while (result == ISC_R_SUCCESS) {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, &rdataset);
/*
* and produce an unnecessary warning message.
*/
if (!catz_rdatatype_is_processable(rdataset.type)) {
- goto next;
+ dns_rdataset_disassociate(&rdataset);
+ continue;
}
/*
cname, classbuf, typebuf,
isc_result_totext(result));
}
- next:
+
dns_rdataset_disassociate(&rdataset);
- result = dns_rdatasetiter_next(rdsiter);
}
dns_rdatasetiter_destroy(&rdsiter);
void
dns__dbiterator_destroy(dns_dbiterator_t **iteratorp DNS__DB_FLARG) {
- /*
- * Destroy '*iteratorp'.
- */
-
REQUIRE(iteratorp != NULL);
REQUIRE(DNS_DBITERATOR_VALID(*iteratorp));
isc_result_t
dns__dbiterator_first(dns_dbiterator_t *iterator DNS__DB_FLARG) {
- /*
- * Move the node cursor to the first node in the database (if any).
- */
-
REQUIRE(DNS_DBITERATOR_VALID(iterator));
- return iterator->methods->first(iterator DNS__DB_FLARG_PASS);
+ isc_result_t result =
+ iterator->methods->first(iterator DNS__DB_FLARG_PASS);
+ ENSURE(result == ISC_R_SUCCESS || result == ISC_R_NOMORE);
+ return result;
}
isc_result_t
dns__dbiterator_last(dns_dbiterator_t *iterator DNS__DB_FLARG) {
- /*
- * Move the node cursor to the first node in the database (if any).
- */
-
REQUIRE(DNS_DBITERATOR_VALID(iterator));
- return iterator->methods->last(iterator DNS__DB_FLARG_PASS);
+ isc_result_t result =
+ iterator->methods->last(iterator DNS__DB_FLARG_PASS);
+ ENSURE(result == ISC_R_SUCCESS || result == ISC_R_NOMORE);
+ return result;
}
isc_result_t
dns__dbiterator_seek(dns_dbiterator_t *iterator,
const dns_name_t *name DNS__DB_FLARG) {
- /*
- * Move the node cursor to the node with name 'name'.
- */
-
REQUIRE(DNS_DBITERATOR_VALID(iterator));
return iterator->methods->seek(iterator, name DNS__DB_FLARG_PASS);
isc_result_t
dns__dbiterator_prev(dns_dbiterator_t *iterator DNS__DB_FLARG) {
- /*
- * Move the node cursor to the previous node in the database (if any).
- */
-
REQUIRE(DNS_DBITERATOR_VALID(iterator));
- return iterator->methods->prev(iterator DNS__DB_FLARG_PASS);
+ isc_result_t result =
+ iterator->methods->prev(iterator DNS__DB_FLARG_PASS);
+ ENSURE(result == ISC_R_SUCCESS || result == ISC_R_NOMORE);
+ return result;
}
isc_result_t
dns__dbiterator_next(dns_dbiterator_t *iterator DNS__DB_FLARG) {
- /*
- * Move the node cursor to the next node in the database (if any).
- */
-
REQUIRE(DNS_DBITERATOR_VALID(iterator));
- return iterator->methods->next(iterator DNS__DB_FLARG_PASS);
+ isc_result_t result =
+ iterator->methods->next(iterator DNS__DB_FLARG_PASS);
+ ENSURE(result == ISC_R_SUCCESS || result == ISC_R_NOMORE);
+ return result;
}
isc_result_t
dns__dbiterator_current(dns_dbiterator_t *iterator, dns_dbnode_t **nodep,
dns_name_t *name DNS__DB_FLARG) {
- /*
- * Return the current node.
- */
-
REQUIRE(DNS_DBITERATOR_VALID(iterator));
REQUIRE(nodep != NULL && *nodep == NULL);
REQUIRE(name == NULL || dns_name_hasbuffer(name));
isc_result_t
dns_dbiterator_pause(dns_dbiterator_t *iterator) {
- /*
- * Pause iteration.
- */
-
REQUIRE(DNS_DBITERATOR_VALID(iterator));
return iterator->methods->pause(iterator);
isc_result_t
dns_dbiterator_origin(dns_dbiterator_t *iterator, dns_name_t *name) {
- /*
- * Return the origin to which returned node names are relative.
- */
-
REQUIRE(DNS_DBITERATOR_VALID(iterator));
REQUIRE(iterator->relative_names);
REQUIRE(dns_name_hasbuffer(name));
bool relative_names;
};
+/* clang-format off */
+/*
+ * This is a hack to build a unique variable name to
+ * replace 'res' below. (Two layers of macro indirection are
+ * needed to make the line number be part of the variable
+ * name; otherwise it would just be "x__LINE__".)
+ */
+#define DNS__DBITERATOR_CONNECT(x,y) x##y
+#define DNS__DBITERATOR_CONCAT(x,y) DNS__DBITERATOR_CONNECT(x,y)
+#define DNS_DBITERATOR_FOREACH_RES(rds, res) \
+ for (isc_result_t res = dns_dbiterator_first((rds)); \
+ res == ISC_R_SUCCESS; res = dns_dbiterator_next((rds)))
+#define DNS_DBITERATOR_FOREACH(rds) \
+ DNS_DBITERATOR_FOREACH_RES(rds, DNS__DBITERATOR_CONCAT(x, __LINE__))
+/* clang-format on */
+
#define dns_dbiterator_destroy(iteratorp) \
dns__dbiterator_destroy(iteratorp DNS__DB_FILELINE)
void
unsigned int options;
};
+/* clang-format off */
+/*
+ * This is a hack to build a unique variable name to
+ * replace 'res' below. (Two layers of macro indirection are
+ * needed to make the line number be part of the variable
+ * name; otherwise it would just be "x__LINE__".)
+ */
+#define DNS__RDATASETITER_CONNECT(x,y) x##y
+#define DNS__RDATASETITER_CONCAT(x,y) DNS__RDATASETITER_CONNECT(x,y)
+#define DNS_RDATASETITER_FOREACH_RES(rds, res) \
+ for (isc_result_t res = dns_rdatasetiter_first((rds)); \
+ res == ISC_R_SUCCESS; res = dns_rdatasetiter_next((rds)))
+#define DNS_RDATASETITER_FOREACH(rds) \
+ DNS_RDATASETITER_FOREACH_RES(rds, DNS__RDATASETITER_CONCAT(x, __LINE__))
+/* clang-format on */
+
#define dns_rdatasetiter_destroy(iteratorp) \
dns__rdatasetiter_destroy(iteratorp DNS__DB_FILELINE)
void
goto cleanup_node;
}
- for (result = dns_rdatasetiter_first(rdsiter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdataset_t rdataset = DNS_RDATASET_INIT;
-
dns_rdatasetiter_current(rdsiter, &rdataset);
DNS_RDATASET_FOREACH (&rdataset) {
}
dns_rdataset_disassociate(&rdataset);
}
- if (result != ISC_R_NOMORE) {
- goto cleanup_iterator;
- }
+ dns_rdatasetiter_destroy(&rdsiter);
result = ISC_R_SUCCESS;
-cleanup_iterator:
- dns_rdatasetiter_destroy(&rdsiter);
-
cleanup_node:
dns_db_detachnode(db, &node);
dump_rdatasets_raw(isc_mem_t *mctx, const dns_name_t *owner_name,
dns_rdatasetiter_t *rdsiter, dns_totext_ctx_t *ctx,
isc_buffer_t *buffer, FILE *f) {
- isc_result_t result;
- dns_rdataset_t rdataset;
+ isc_result_t result = ISC_R_SUCCESS;
dns_fixedname_t fixed;
- dns_name_t *name;
+ dns_name_t *name = dns_fixedname_initname(&fixed);
- name = dns_fixedname_initname(&fixed);
dns_name_copy(owner_name, name);
- for (result = dns_rdatasetiter_first(rdsiter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
- dns_rdataset_init(&rdataset);
+ DNS_RDATASETITER_FOREACH (rdsiter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(rdsiter, &rdataset);
dns_rdataset_getownercase(&rdataset, name);
}
}
- if (result == ISC_R_NOMORE) {
- result = ISC_R_SUCCESS;
- }
-
return result;
}
CHECK(writeheader(dctx));
- result = dns_dbiterator_first(dctx->dbiter);
- if (result != ISC_R_SUCCESS && result != ISC_R_NOMORE) {
- goto cleanup;
- }
-
- while (result == ISC_R_SUCCESS) {
+ DNS_DBITERATOR_FOREACH (dctx->dbiter) {
dns_rdatasetiter_t *rdsiter = NULL;
dns_dbnode_t *node = NULL;
goto cleanup;
}
dns_db_detachnode(dctx->db, &node);
- result = dns_dbiterator_next(dctx->dbiter);
}
if (result == ISC_R_NOMORE) {
const dns_name_t *target, unsigned char *buffer,
dns_rdata_t *rdata) {
isc_result_t result;
- dns_rdataset_t rdataset;
isc_region_t r;
unsigned int i;
-
unsigned char *nsec_bits, *bm;
unsigned int max_type;
dns_rdatasetiter_t *rdsiter;
dns_nsec_setbit(bm, dns_rdatatype_rrsig, 1);
dns_nsec_setbit(bm, dns_rdatatype_nsec, 1);
max_type = dns_rdatatype_nsec;
- dns_rdataset_init(&rdataset);
rdsiter = NULL;
result = dns_db_allrdatasets(db, node, version, 0, 0, &rdsiter);
if (result != ISC_R_SUCCESS) {
return result;
}
- for (result = dns_rdatasetiter_first(rdsiter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(rdsiter, &rdataset);
if (rdataset.type != dns_rdatatype_nsec &&
rdataset.type != dns_rdatatype_nsec3 &&
}
dns_rdataset_disassociate(&rdataset);
}
+ dns_rdatasetiter_destroy(&rdsiter);
/*
* At zone cuts, deny the existence of glue in the parent zone.
}
}
- dns_rdatasetiter_destroy(&rdsiter);
- if (result != ISC_R_NOMORE) {
- return result;
- }
-
nsec_bits += dns_nsec_compressbitmap(nsec_bits, bm, max_type);
r.length = (unsigned int)(nsec_bits - r.base);
size_t hash_length, unsigned char *buffer,
dns_rdata_t *rdata) {
isc_result_t result;
- dns_rdataset_t rdataset;
isc_region_t r;
unsigned int i;
bool found;
bool found_ns;
bool need_rrsig;
-
unsigned char *nsec_bits, *bm;
unsigned int max_type;
dns_rdatasetiter_t *rdsiter;
if (node == NULL) {
goto collapse_bitmap;
}
- dns_rdataset_init(&rdataset);
rdsiter = NULL;
result = dns_db_allrdatasets(db, node, version, 0, 0, &rdsiter);
if (result != ISC_R_SUCCESS) {
return result;
}
found = found_ns = need_rrsig = false;
- for (result = dns_rdatasetiter_first(rdsiter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(rdsiter, &rdataset);
if (rdataset.type != dns_rdatatype_nsec &&
rdataset.type != dns_rdatatype_nsec3 &&
}
dns_rdataset_disassociate(&rdataset);
}
+ dns_rdatasetiter_destroy(&rdsiter);
+
if ((found && !found_ns) || need_rrsig) {
if (dns_rdatatype_rrsig > max_type) {
max_type = dns_rdatatype_rrsig;
}
}
- dns_rdatasetiter_destroy(&rdsiter);
- if (result != ISC_R_NOMORE) {
- return result;
- }
-
collapse_bitmap:
nsec_bits += dns_nsec_compressbitmap(nsec_bits, bm, max_type);
r.length = (unsigned int)(nsec_bits - r.base);
void
dns__rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp DNS__DB_FLARG) {
- /*
- * Destroy '*iteratorp'.
- */
-
REQUIRE(iteratorp != NULL);
REQUIRE(DNS_RDATASETITER_VALID(*iteratorp));
isc_result_t
dns__rdatasetiter_first(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
- /*
- * Move the rdataset cursor to the first rdataset at the node (if any).
- */
-
REQUIRE(DNS_RDATASETITER_VALID(iterator));
- return iterator->methods->first(iterator DNS__DB_FLARG_PASS);
+ isc_result_t result =
+ iterator->methods->first(iterator DNS__DB_FLARG_PASS);
+ ENSURE(result == ISC_R_SUCCESS || result == ISC_R_NOMORE);
+ return result;
}
isc_result_t
dns__rdatasetiter_next(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
- /*
- * Move the rdataset cursor to the next rdataset at the node (if any).
- */
-
REQUIRE(DNS_RDATASETITER_VALID(iterator));
- return iterator->methods->next(iterator DNS__DB_FLARG_PASS);
+ isc_result_t result =
+ iterator->methods->next(iterator DNS__DB_FLARG_PASS);
+ ENSURE(result == ISC_R_SUCCESS || result == ISC_R_NOMORE);
+ return result;
}
void
dns__rdatasetiter_current(dns_rdatasetiter_t *iterator,
dns_rdataset_t *rdataset DNS__DB_FLARG) {
- /*
- * Return the current rdataset.
- */
-
REQUIRE(DNS_RDATASETITER_VALID(iterator));
REQUIRE(DNS_RDATASET_VALID(rdataset));
REQUIRE(!dns_rdataset_isassociated(rdataset));
static isc_result_t
check_node(dns_rdataset_t *rootns, dns_name_t *name,
dns_rdatasetiter_t *rdsiter) {
- isc_result_t result;
- dns_rdataset_t rdataset;
-
- dns_rdataset_init(&rdataset);
- result = dns_rdatasetiter_first(rdsiter);
- while (result == ISC_R_SUCCESS) {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(rdsiter, &rdataset);
- switch (rdataset.type) {
+ dns_rdatatype_t type = rdataset.type;
+ dns_rdataset_disassociate(&rdataset);
+
+ switch (type) {
case dns_rdatatype_a:
case dns_rdatatype_aaaa:
- result = in_rootns(rootns, name);
- if (result != ISC_R_SUCCESS) {
- goto cleanup;
- }
- break;
+ return in_rootns(rootns, name);
case dns_rdatatype_ns:
if (dns_name_compare(name, dns_rootname) == 0) {
- break;
+ return ISC_R_SUCCESS;
}
FALLTHROUGH;
default:
- result = ISC_R_FAILURE;
- goto cleanup;
+ return ISC_R_FAILURE;
}
- dns_rdataset_disassociate(&rdataset);
- result = dns_rdatasetiter_next(rdsiter);
- }
- if (result == ISC_R_NOMORE) {
- result = ISC_R_SUCCESS;
}
-cleanup:
- if (dns_rdataset_isassociated(&rdataset)) {
- dns_rdataset_disassociate(&rdataset);
- }
- return result;
+
+ return ISC_R_SUCCESS;
}
static isc_result_t
if (result != ISC_R_SUCCESS) {
goto cleanup;
}
- result = dns_dbiterator_first(dbiter);
- while (result == ISC_R_SUCCESS) {
+ DNS_DBITERATOR_FOREACH (dbiter) {
result = dns_dbiterator_current(dbiter, &node, name);
if (result != ISC_R_SUCCESS) {
goto cleanup;
}
dns_rdatasetiter_destroy(&rdsiter);
dns_db_detachnode(db, &node);
- result = dns_dbiterator_next(dbiter);
- }
- if (result == ISC_R_NOMORE) {
- result = ISC_R_SUCCESS;
}
cleanup:
foreach_rrset(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
rrset_func *action, void *action_data) {
isc_result_t result;
- dns_dbnode_t *node;
- dns_rdatasetiter_t *iter;
+ dns_dbnode_t *node = NULL;
+ dns_rdatasetiter_t *iter = NULL;
- node = NULL;
result = dns_db_findnode(db, name, false, &node);
if (result == ISC_R_NOTFOUND) {
return ISC_R_SUCCESS;
return result;
}
- iter = NULL;
result = dns_db_allrdatasets(db, node, ver, 0, (isc_stdtime_t)0, &iter);
if (result != ISC_R_SUCCESS) {
goto cleanup_node;
}
- for (result = dns_rdatasetiter_first(iter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iter))
- {
- dns_rdataset_t rdataset;
+ DNS_RDATASETITER_FOREACH (iter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
- dns_rdataset_init(&rdataset);
dns_rdatasetiter_current(iter, &rdataset);
result = (*action)(action_data, &rdataset);
dns_rdataset_disassociate(&rdataset);
if (result != ISC_R_SUCCESS) {
- goto cleanup_iterator;
+ break;
}
}
- if (result == ISC_R_NOMORE) {
- result = ISC_R_SUCCESS;
- }
-
-cleanup_iterator:
dns_rdatasetiter_destroy(&iter);
cleanup_node:
goto cleanup_node;
}
- for (result = dns_rdatasetiter_first(iter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iter))
- {
- dns_rdataset_t rdataset;
+ DNS_RDATASETITER_FOREACH (iter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatatype_t type;
bool flag;
- dns_rdataset_init(&rdataset);
dns_rdatasetiter_current(iter, &rdataset);
type = rdataset.type;
dns_rdataset_disassociate(&rdataset);
result = rrset_exists(db, ver, name, dns_rdatatype_rrsig, type,
&flag);
if (result != ISC_R_SUCCESS) {
- goto cleanup_iterator;
+ break;
}
if (flag) {
continue;
result = add_sigs(log, zone, db, ver, name, type, diff, keys,
nkeys, now, inception, expire);
if (result != ISC_R_SUCCESS) {
- goto cleanup_iterator;
+ break;
}
(*sigs)++;
}
- if (result == ISC_R_NOMORE) {
- result = ISC_R_SUCCESS;
- }
-
-cleanup_iterator:
dns_rdatasetiter_destroy(&iter);
cleanup_node:
dns_dbiterator_t *dbiterator = NULL;
dns_dbnode_t *node = NULL;
dns_fixedname_t fixed;
- dns_name_t *name;
- dns_rdataset_t rdataset;
+ dns_name_t *name = dns_fixedname_initname(&fixed);
dns_rdatasetiter_t *rdsit = NULL;
bool ok = true;
isc_result_t result;
- name = dns_fixedname_initname(&fixed);
- dns_rdataset_init(&rdataset);
-
result = dns_db_createiterator(db, 0, &dbiterator);
if (result != ISC_R_SUCCESS) {
return true;
}
- for (result = dns_dbiterator_first(dbiterator); result == ISC_R_SUCCESS;
- result = dns_dbiterator_next(dbiterator))
- {
+ DNS_DBITERATOR_FOREACH (dbiterator) {
result = dns_dbiterator_current(dbiterator, &node, name);
if (result != ISC_R_SUCCESS) {
continue;
continue;
}
- for (result = dns_rdatasetiter_first(rdsit);
- result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsit))
- {
+ DNS_RDATASETITER_FOREACH (rdsit) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(rdsit, &rdataset);
if (!zone_rrset_check_dup(zone, name, &rdataset)) {
ok = false;
return true;
}
- result = dns_dbiterator_first(dbiterator);
- while (result == ISC_R_SUCCESS) {
+ DNS_DBITERATOR_FOREACH (dbiterator) {
result = dns_dbiterator_current(dbiterator, &node, name);
if (result != ISC_R_SUCCESS) {
goto cleanup;
next:
dns_db_detachnode(db, &node);
- result = dns_dbiterator_next(dbiterator);
}
if (has_a) {
dns_dbversion_t *version, bool *is_bottom_of_zone) {
isc_result_t result;
dns_rdatasetiter_t *iterator = NULL;
- dns_rdataset_t rdataset;
bool seen_soa = false, seen_ns = false, seen_dname = false;
REQUIRE(is_bottom_of_zone != NULL);
return result;
}
- dns_rdataset_init(&rdataset);
- for (result = dns_rdatasetiter_first(iterator); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iterator))
- {
+ DNS_RDATASETITER_FOREACH (iterator) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(iterator, &rdataset);
switch (rdataset.type) {
case dns_rdatatype_soa:
}
dns_rdataset_disassociate(&rdataset);
}
- if (result != ISC_R_NOMORE) {
- goto failure;
- }
+
if ((seen_ns && !seen_soa) || seen_dname) {
*is_bottom_of_zone = true;
}
- result = ISC_R_SUCCESS;
-failure:
dns_rdatasetiter_destroy(&iterator);
-
- return result;
+ return ISC_R_SUCCESS;
}
static isc_result_t
dns_diff_t *diff, int32_t *signatures, isc_mem_t *mctx) {
isc_result_t result;
dns_rdatasetiter_t *iterator = NULL;
- dns_rdataset_t rdataset;
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdata_t rdata = DNS_RDATA_INIT;
dns_stats_t *dnssecsignstats;
bool offlineksk = false;
return result;
}
- dns_rdataset_init(&rdataset);
isc_buffer_init(&buffer, data, sizeof(data));
seen_rr = seen_soa = seen_ns = seen_nsec = seen_nsec3 = seen_ds = false;
- for (result = dns_rdatasetiter_first(iterator); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iterator))
- {
+ DNS_RDATASETITER_FOREACH (iterator) {
dns_rdatasetiter_current(iterator, &rdataset);
if (rdataset.type == dns_rdatatype_soa) {
seen_soa = true;
}
dns_rdataset_disassociate(&rdataset);
}
- if (result != ISC_R_NOMORE) {
- goto failure;
- }
+
/*
* Going from insecure to NSEC3.
* Don't generate NSEC3 records for NSEC3 records.
(*signatures)--;
}
}
- result = dns_rdatasetiter_first(iterator);
- while (result == ISC_R_SUCCESS) {
+
+ DNS_RDATASETITER_FOREACH (iterator) {
isc_stdtime_t when;
+ if (dns_rdataset_isassociated(&rdataset)) {
+ dns_rdataset_disassociate(&rdataset);
+ }
+
dns_rdatasetiter_current(iterator, &rdataset);
if (rdataset.type == dns_rdatatype_soa ||
rdataset.type == dns_rdatatype_rrsig)
{
- goto next_rdataset;
+ continue;
}
if (dns_rdatatype_iskeymaterial(rdataset.type)) {
/*
* which would only include KSK's.)
*/
if (!is_ksk && both) {
- goto next_rdataset;
+ continue;
}
} else if (!is_zsk && both) {
- goto next_rdataset;
+ continue;
} else if (is_zsk &&
!dst_key_is_signing(key, DST_BOOL_ZSK, now, &when))
{
/* Only applies to dnssec-policy. */
if (zone->kasp != NULL) {
- goto next_rdataset;
+ continue;
}
}
if (seen_ns && !seen_soa && rdataset.type != dns_rdatatype_ds &&
rdataset.type != dns_rdatatype_nsec)
{
- goto next_rdataset;
+ continue;
}
if (signed_with_good_key(zone, db, node, version, rdataset.type,
key))
{
- goto next_rdataset;
+ continue;
}
/* Calculate the signature, creating a RRSIG RDATA. */
}
(*signatures)--;
- next_rdataset:
- dns_rdataset_disassociate(&rdataset);
- result = dns_rdatasetiter_next(iterator);
- }
- if (result == ISC_R_NOMORE) {
- result = ISC_R_SUCCESS;
}
+
failure:
if (dns_rdataset_isassociated(&rdataset)) {
dns_rdataset_disassociate(&rdataset);
dns_fixedname_t fixed;
dns_fixedname_t nextfixed;
dns_name_t *name = NULL, *nextname = NULL;
- dns_rdataset_t rdataset;
dns_nsec3chain_t *nsec3chain = NULL;
dns_nsec3chainlist_t cleanup;
dst_key_t *zone_keys[DNS_MAXZONEKEYS];
ENTER;
- dns_rdataset_init(&rdataset);
name = dns_fixedname_initname(&fixed);
nextname = dns_fixedname_initname(&nextfixed);
dns_diff_init(zone->mctx, ¶m_diff);
}
seen_soa = seen_ns = seen_dname = seen_ds = seen_nsec = false;
- for (result = dns_rdatasetiter_first(iterator);
- result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iterator))
- {
+ DNS_RDATASETITER_FOREACH (iterator) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(iterator, &rdataset);
INSIST(rdataset.type != dns_rdatatype_nsec3);
if (rdataset.type == dns_rdatatype_soa) {
seen_soa = seen_ns = seen_dname = seen_nsec3 = seen_nsec =
seen_rr = false;
- for (result = dns_rdatasetiter_first(iterator);
- result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iterator))
- {
+ DNS_RDATASETITER_FOREACH (iterator) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(iterator, &rdataset);
if (rdataset.type == dns_rdatatype_soa) {
seen_soa = true;
isc_result_totext(result));
goto failure;
}
- for (result = dns_rdatasetiter_first(iterator);
- result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iterator))
- {
+ DNS_RDATASETITER_FOREACH (iterator) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(iterator, &rdataset);
if (rdataset.type == dns_rdatatype_nsec) {
rebuild_nsec = true;
}
dns_rdataset_init(&rdataset);
- for (result = dns_rdatasetiter_first(iterator); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iterator))
- {
+ DNS_RDATASETITER_FOREACH (iterator) {
bool has_alg = false;
dns_rdatasetiter_current(iterator, &rdataset);
if (nkeys == 0 && rdataset.type == dns_rdatatype_nsec) {
alg_missed = true;
}
}
- if (result == ISC_R_NOMORE) {
- result = ISC_R_SUCCESS;
- }
/*
* Set `has_algp` if the algorithm was found in every RRset:
dns_dbnode_t *rawnode = NULL, *node = NULL;
dns_fixedname_t fixed;
dns_name_t *name = dns_fixedname_initname(&fixed);
- dns_rdataset_t rdataset;
dns_rdatasetiter_t *rdsit = NULL;
isc_result_t result;
goto cleanup;
}
- dns_rdataset_init(&rdataset);
-
- for (result = dns_rdatasetiter_first(rdsit); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsit))
- {
+ DNS_RDATASETITER_FOREACH (rdsit) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(rdsit, &rdataset);
if (rdataset.type == dns_rdatatype_nsec ||
rdataset.type == dns_rdatatype_rrsig ||
}
dns_rdataset_disassociate(&rdataset);
if (result != ISC_R_SUCCESS) {
- goto cleanup;
+ break;
}
}
- if (result == ISC_R_NOMORE) {
- result = ISC_R_SUCCESS;
- }
cleanup:
if (rdsit != NULL) {
goto failure;
}
- for (result = dns_dbiterator_first(dbiterator); result == ISC_R_SUCCESS;
- result = dns_dbiterator_next(dbiterator))
- {
+ DNS_DBITERATOR_FOREACH (dbiterator) {
result = copy_non_dnssec_records(db, version, rawdb, dbiterator,
oldserialp);
if (result != ISC_R_SUCCESS) {
}
}
dns_dbiterator_destroy(&dbiterator);
- if (result != ISC_R_NOMORE) {
- goto failure;
- }
/*
* Call restore_nsec3param() to create private-type records from
const dns_name_t *name, dns_dbnode_t *node) {
char namebuf[DNS_NAME_FORMATSIZE];
char typebuf[DNS_RDATATYPE_FORMATSIZE];
- dns_rdataset_t sigrdataset;
+ dns_rdataset_t sigrdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_t *rdsiter = NULL;
isc_result_t result;
isc_result_totext(result));
return result;
}
- for (result = dns_rdatasetiter_first(rdsiter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, &sigrdataset);
if (sigrdataset.type == dns_rdatatype_rrsig &&
sigrdataset.covers == rdataset->type)
char namebuf[DNS_NAME_FORMATSIZE];
char algbuf[DNS_SECALG_FORMATSIZE];
char typebuf[DNS_RDATATYPE_FORMATSIZE];
- dns_rdataset_t sigrdataset;
+ dns_rdataset_t sigrdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_t *rdsiter = NULL;
+ bool match = false;
isc_result_t result;
- dns_rdataset_init(&sigrdataset);
result = dns_db_allrdatasets(vctx->db, node, vctx->ver, 0, 0, &rdsiter);
if (result != ISC_R_SUCCESS) {
zoneverify_log_error(vctx, "dns_db_allrdatasets(): %s",
isc_result_totext(result));
return result;
}
- for (result = dns_rdatasetiter_first(rdsiter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, &sigrdataset);
if (sigrdataset.type == dns_rdatatype_rrsig &&
sigrdataset.covers == rdataset->type)
{
+ match = true;
break;
}
dns_rdataset_disassociate(&sigrdataset);
}
- if (result != ISC_R_SUCCESS) {
+
+ if (!match) {
dns_name_format(name, namebuf, sizeof(namebuf));
dns_rdatatype_format(rdataset->type, typebuf, sizeof(typebuf));
zoneverify_log_error(vctx, "No signatures for %s/%s", namebuf,
const dns_name_t *nextname, isc_result_t *vresult) {
unsigned char types[8192] = { 0 };
unsigned int maxtype = 0;
- dns_rdataset_t rdataset;
dns_rdatasetiter_t *rdsiter = NULL;
isc_result_t result, tvresult = ISC_R_UNSET;
return result;
}
- result = dns_rdatasetiter_first(rdsiter);
- dns_rdataset_init(&rdataset);
- while (result == ISC_R_SUCCESS) {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(rdsiter, &rdataset);
+
/*
* If we are not at a delegation then everything should be
* signed. If we are at a delegation then only the DS set
}
}
dns_rdataset_disassociate(&rdataset);
- result = dns_rdatasetiter_next(rdsiter);
}
dns_rdatasetiter_destroy(&rdsiter);
- if (result != ISC_R_NOMORE) {
- zoneverify_log_error(vctx, "rdataset iteration failed: %s",
- isc_result_totext(result));
- return result;
- }
if (vresult == NULL) {
return ISC_R_SUCCESS;
return result;
}
- for (result = dns_dbiterator_first(dbiter); result == ISC_R_SUCCESS;
- result = dns_dbiterator_next(dbiter))
- {
+ DNS_DBITERATOR_FOREACH (dbiter) {
result = dns_dbiterator_current(dbiter, &node, name);
if (result != ISC_R_SUCCESS && result != DNS_R_NEWORIGIN) {
zoneverify_log_error(vctx,
* Choose the best rdataset if we found something.
*/
if (result == ISC_R_SUCCESS) {
- dns_rdatasetiter_t *rdsiter;
+ dns_rdatasetiter_t *rdsiter = NULL;
+ bool match = false;
- rdsiter = NULL;
result = dns_db_allrdatasets(*dbp, *nodep, *versionp, 0, 0,
&rdsiter);
if (result != ISC_R_SUCCESS) {
if (qtype == dns_rdatatype_aaaa &&
!ISC_LIST_EMPTY(client->view->dns64))
{
- for (result = dns_rdatasetiter_first(rdsiter);
- result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, *rdatasetp);
if ((*rdatasetp)->type == dns_rdatatype_a) {
found_a = true;
dns_rdataset_disassociate(*rdatasetp);
}
}
- for (result = dns_rdatasetiter_first(rdsiter);
- result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(rdsiter))
- {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, *rdatasetp);
if ((*rdatasetp)->type == dns_rdatatype_cname ||
(*rdatasetp)->type == qtype)
{
+ match = true;
break;
}
dns_rdataset_disassociate(*rdatasetp);
}
dns_rdatasetiter_destroy(&rdsiter);
- if (result != ISC_R_SUCCESS) {
- if (result != ISC_R_NOMORE) {
- rpz_log_fail(client, DNS_RPZ_ERROR_LEVEL,
- p_name, rpz_type, "rdatasetiter",
- result);
- CTRACE(ISC_LOG_ERROR, "rpz_find_p: "
- "rdatasetiter failed");
- return DNS_R_SERVFAIL;
- }
+ if (!match) {
/*
* Ask again to get the right DNS_R_DNAME/NXRRSET/...
* result if there is neither a CNAME nor target type.
ns_client_keepname(qctx->client, qctx->fname, qctx->dbuf);
qctx->tname = qctx->fname;
- result = dns_rdatasetiter_first(rdsiter);
- while (result == ISC_R_SUCCESS) {
+ DNS_RDATASETITER_FOREACH (rdsiter) {
dns_rdatasetiter_current(rdsiter, qctx->rdataset);
/*
*/
dns_rdataset_disassociate(qctx->rdataset);
}
-
- result = dns_rdatasetiter_next(rdsiter);
}
dns_rdatasetiter_destroy(&rdsiter);
- if (result != ISC_R_NOMORE) {
- CCTRACE(ISC_LOG_ERROR, "query_respond_any: rdataset iterator "
- "failed");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
- return ns_query_done(qctx);
- }
-
if (found) {
/*
* Call hook if any answers were found.
goto cleanup_node;
}
- for (result = dns_rdatasetiter_first(iter); result == ISC_R_SUCCESS;
- result = dns_rdatasetiter_next(iter))
- {
- dns_rdataset_t rdataset;
-
- dns_rdataset_init(&rdataset);
+ DNS_RDATASETITER_FOREACH (iter) {
+ dns_rdataset_t rdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(iter, &rdataset);
result = (*action)(action_data, &rdataset);
dns_rdataset_disassociate(&rdataset);
if (result != ISC_R_SUCCESS) {
- goto cleanup_iterator;
+ break;
}
}
- if (result == ISC_R_NOMORE) {
- result = ISC_R_SUCCESS;
- }
-
-cleanup_iterator:
dns_rdatasetiter_destroy(&iter);
cleanup_node:
result = dns_db_createiterator(db, flags, &iter);
assert_int_equal(result, ISC_R_SUCCESS);
- for (result = dns_dbiterator_first(iter); result == ISC_R_SUCCESS;
- result = dns_dbiterator_next(iter))
- {
+ DNS_DBITERATOR_FOREACH (iter) {
result = dns_dbiterator_current(iter, &node, name);
assert_int_equal(result, ISC_R_SUCCESS);
dns_db_detachnode(db, &node);