#include <isc/file.h>
#include <isc/hash.h>
#include <isc/hex.h>
+#include <isc/list.h>
#include <isc/log.h>
#include <isc/loop.h>
#include <isc/md.h>
return false;
}
-static isc_result_t
+static void
checkds_create(isc_mem_t *mctx, unsigned int flags, dns_checkds_t **checkdsp) {
dns_checkds_t *checkds;
checkds = isc_mem_get(mctx, sizeof(*checkds));
*checkds = (dns_checkds_t){
+ .magic = CHECKDS_MAGIC,
.flags = flags,
+ .link = ISC_LINK_INITIALIZER,
+ .mctx = isc_mem_ref(mctx),
+ .ns = DNS_NAME_INITEMPTY,
};
- isc_mem_attach(mctx, &checkds->mctx);
isc_sockaddr_any(&checkds->dst);
- dns_name_init(&checkds->ns);
- ISC_LINK_INIT(checkds, link);
- checkds->magic = CHECKDS_MAGIC;
+
*checkdsp = checkds;
- return ISC_R_SUCCESS;
}
static void
}
newcheckds = NULL;
- CHECK(checkds_create(checkds->mctx, 0, &newcheckds));
+ checkds_create(checkds->mctx, 0, &newcheckds);
zone_iattach(zone, &newcheckds->zone);
ISC_LIST_APPEND(newcheckds->zone->checkds_requests, newcheckds,
link);
INSIST(isc_sockaddr_pf(&src) == isc_sockaddr_pf(&dst));
if (isc_sockaddr_disabled(&dst)) {
+ if (key != NULL) {
+ dns_tsigkey_detach(&key);
+ }
+ if (transport != NULL) {
+ dns_transport_detach(&transport);
+ }
goto next;
}
"parent %d",
i);
- result = checkds_create(zone->mctx, flags, &checkds);
- if (result != ISC_R_SUCCESS) {
- dns_zone_log(zone, ISC_LOG_DEBUG(3),
- "checkds: create DS query for "
- "parent %d failed",
- i);
- goto next;
- }
+ checkds_create(zone->mctx, flags, &checkds);
zone_iattach(zone, &checkds->zone);
dns_name_dup(dns_rootname, checkds->mctx, &checkds->ns);
checkds->src = src;
if (isqueued) {
continue;
}
- result = checkds_create(zone->mctx, 0, &checkds);
- if (result != ISC_R_SUCCESS) {
- dns_zone_log(zone, ISC_LOG_DEBUG(3),
- "checkds: checkds_create() failed: %s",
- isc_result_totext(result));
- break;
- }
+ checkds_create(zone->mctx, 0, &checkds);
if (isc_log_wouldlog(ISC_LOG_DEBUG(3))) {
char nsnamebuf[DNS_NAME_FORMATSIZE];