]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Apply the dns_rdataset_cleanup patch through the codebase
authorOndřej Surý <ondrej@isc.org>
Wed, 17 Dec 2025 06:09:15 +0000 (07:09 +0100)
committerOndřej Surý <ondrej@isc.org>
Wed, 17 Dec 2025 14:19:55 +0000 (15:19 +0100)
Add a semantic patch to turn the conditional rdataset disassociate into
dns_rdataset_cleanup() call and run it.

36 files changed:
bin/dnssec/dnssec-cds.c
bin/dnssec/dnssec-dsfromkey.c
bin/dnssec/dnssec-importkey.c
bin/dnssec/dnssec-signzone.c
bin/named/server.c
bin/named/zoneconf.c
bin/plugins/filter-a.c
bin/plugins/filter-aaaa.c
cocci/dns_rdataset_cleanup.spatch [new file with mode: 0644]
lib/dns/adb.c
lib/dns/client.c
lib/dns/diff.c
lib/dns/dnssec.c
lib/dns/masterdump.c
lib/dns/message.c
lib/dns/nsec.c
lib/dns/nsec3.c
lib/dns/nta.c
lib/dns/private.c
lib/dns/qpzone.c
lib/dns/resolver.c
lib/dns/rootns.c
lib/dns/rriterator.c
lib/dns/sdlz.c
lib/dns/tkey.c
lib/dns/update.c
lib/dns/validator.c
lib/dns/view.c
lib/dns/zone.c
lib/dns/zonefetch.c
lib/dns/zoneverify.c
lib/ns/client.c
lib/ns/query.c
lib/ns/update.c
tests/dns/db_test.c
tests/dns/dbversion_test.c

index 9f976e21f184d1577c06ebf7e70b6b432eb26536..50239e6178841e0165f4b16751492d79c669605e 100644 (file)
@@ -195,9 +195,7 @@ findset(dns_db_t *db, dns_dbnode_t *node, dns_rdatatype_t type,
 
 static void
 freeset(dns_rdataset_t *rdataset) {
-       if (dns_rdataset_isassociated(rdataset)) {
-               dns_rdataset_disassociate(rdataset);
-       }
+       dns_rdataset_cleanup(rdataset);
 }
 
 static void
index 76e2a80b7ce36f7a019d4a88e1ce1e2fc4dd44e1..e18a52cf21d81721c9ed1e97e34e4b45bbd1b3e8 100644 (file)
@@ -541,9 +541,7 @@ main(int argc, char **argv) {
                emits(showall, cds, &rdata);
        }
 
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (verbose > 10) {
                isc_mem_stats(isc_g_mctx, stdout);
        }
index 23361ef7130ace111d885e287a36e03abd4eea27..59e05f10a21184933339ff01d46a3092cdbc5930 100644 (file)
@@ -447,9 +447,7 @@ main(int argc, char **argv) {
                emit(dir, &rdata);
        }
 
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (verbose > 10) {
                isc_mem_stats(isc_g_mctx, stdout);
        }
index 3b139ef91cea071f0d8611872b50365a25ad80da..99965f93886a57f5d792f33cf660f2510bb0a236 100644 (file)
@@ -677,9 +677,7 @@ signset(dns_diff_t *del, dns_diff_t *add, dns_dbnode_t *node, dns_name_t *name,
        }
 
        check_result(result, "dns_rdataset_first/next");
-       if (dns_rdataset_isassociated(&sigset)) {
-               dns_rdataset_disassociate(&sigset);
-       }
+       dns_rdataset_cleanup(&sigset);
 
        ISC_LIST_FOREACH(keylist, key, link) {
                if (REVOKE(key->key) && set->type != dns_rdatatype_dnskey) {
@@ -1108,9 +1106,7 @@ secure(dns_name_t *name, dns_dbnode_t *node) {
        dns_rdataset_init(&dsset);
        result = dns_db_findrdataset(gdb, node, gversion, dns_rdatatype_ds, 0,
                                     0, &dsset, NULL);
-       if (dns_rdataset_isassociated(&dsset)) {
-               dns_rdataset_disassociate(&dsset);
-       }
+       dns_rdataset_cleanup(&dsset);
 
        return result == ISC_R_SUCCESS;
 }
@@ -1148,9 +1144,7 @@ has_dname(dns_db_t *db, dns_dbversion_t *ver, dns_dbnode_t *node) {
        dns_rdataset_init(&dnameset);
        result = dns_db_findrdataset(db, node, ver, dns_rdatatype_dname, 0, 0,
                                     &dnameset, NULL);
-       if (dns_rdataset_isassociated(&dnameset)) {
-               dns_rdataset_disassociate(&dnameset);
-       }
+       dns_rdataset_cleanup(&dnameset);
 
        return result == ISC_R_SUCCESS;
 }
@@ -1562,9 +1556,7 @@ assignwork(void *arg) {
                dns_rdataset_init(&nsec);
                result = dns_db_findrdataset(gdb, node, gversion, nsec_datatype,
                                             0, 0, &nsec, NULL);
-               if (dns_rdataset_isassociated(&nsec)) {
-                       dns_rdataset_disassociate(&nsec);
-               }
+               dns_rdataset_cleanup(&nsec);
                if (result == ISC_R_SUCCESS) {
                        found = true;
                } else if (nsec_datatype == dns_rdatatype_nsec3) {
@@ -1653,9 +1645,7 @@ add_ds(dns_name_t *name, dns_dbnode_t *node, uint32_t nsttl) {
                                            NULL);
                check_result(result, "dns_db_addrdataset");
                dns_rdataset_disassociate(&dsset);
-               if (dns_rdataset_isassociated(&sigdsset)) {
-                       dns_rdataset_disassociate(&sigdsset);
-               }
+               dns_rdataset_cleanup(&sigdsset);
        } else if (dns_rdataset_isassociated(&sigdsset)) {
                result = dns_db_deleterdataset(gdb, node, gversion,
                                               dns_rdatatype_rrsig,
@@ -2545,15 +2535,9 @@ loadzonekeys(bool preserve_keys, bool load_public) {
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
-       if (dns_rdataset_isassociated(&keysigs)) {
-               dns_rdataset_disassociate(&keysigs);
-       }
-       if (dns_rdataset_isassociated(&soasigs)) {
-               dns_rdataset_disassociate(&soasigs);
-       }
+       dns_rdataset_cleanup(&rdataset);
+       dns_rdataset_cleanup(&keysigs);
+       dns_rdataset_cleanup(&soasigs);
        dns_db_detachnode(&node);
        dns_db_closeversion(gdb, &currentversion, false);
 }
@@ -2779,12 +2763,8 @@ findkeys:
 
        dns_diff_clear(&diff);
 
-       if (dns_rdataset_isassociated(&cdsset)) {
-               dns_rdataset_disassociate(&cdsset);
-       }
-       if (dns_rdataset_isassociated(&cdnskeyset)) {
-               dns_rdataset_disassociate(&cdnskeyset);
-       }
+       dns_rdataset_cleanup(&cdsset);
+       dns_rdataset_cleanup(&cdnskeyset);
 
        clear_keylist(&rmkeys);
        clear_keylist(&matchkeys);
@@ -2936,9 +2916,7 @@ set_nsec3params(bool update, bool set_salt, bool set_optout, bool set_iter) {
        dns_rdata_freestruct(&nsec3);
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
index a39eb30837fa3a516d727220bfc752ed27eaf2d4..a8213215e8bba0acbea4c39094e6b3f1f815f80e 100644 (file)
@@ -6487,12 +6487,8 @@ tat_done(void *arg) {
 
        dns_resolver_freefresp(&resp);
        dns_resolver_destroyfetch(&tat->fetch);
-       if (dns_rdataset_isassociated(&tat->rdataset)) {
-               dns_rdataset_disassociate(&tat->rdataset);
-       }
-       if (dns_rdataset_isassociated(&tat->sigrdataset)) {
-               dns_rdataset_disassociate(&tat->sigrdataset);
-       }
+       dns_rdataset_cleanup(&tat->rdataset);
+       dns_rdataset_cleanup(&tat->sigrdataset);
        dns_view_detach(&tat->view);
        isc_mem_putanddetach(&tat->mctx, tat, sizeof(*tat));
 }
@@ -6636,9 +6632,7 @@ tat_send(void *arg) {
         * it succeeds.  Thus, we need to check whether 'nameservers' is
         * associated and release it if it is.
         */
-       if (dns_rdataset_isassociated(&nameservers)) {
-               dns_rdataset_disassociate(&nameservers);
-       }
+       dns_rdataset_cleanup(&nameservers);
 
        if (result != ISC_R_SUCCESS) {
                dns_view_detach(&tat->view);
@@ -13904,9 +13898,7 @@ named_server_signing(named_server_t *server, isc_lex_t *lex,
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&privset)) {
-               dns_rdataset_disassociate(&privset);
-       }
+       dns_rdataset_cleanup(&privset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
index b43223395f350817224b816a29a07373692bbf05..1d9ab722cf2af0acb51527df8801c3245b8dc978 100644 (file)
@@ -642,9 +642,7 @@ configure_staticstub(const cfg_obj_t *zconfig, const cfg_obj_t *tconfig,
        result = ISC_R_SUCCESS;
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (apexnode != NULL) {
                dns_db_detachnode(&apexnode);
        }
index 541bb7ebc5044991abefa2988a8f347bc037e0cb..f722fdcb813945a29e552ad35c31c7a2efb71b77 100644 (file)
@@ -695,9 +695,7 @@ filter_respond_begin(void *arg, void *cbdata, isc_result_t *resp) {
                result = dns_db_findrdataset(
                        qctx->db, qctx->node, qctx->version, dns_rdatatype_aaaa,
                        0, qctx->client->inner.now, trdataset, NULL);
-               if (dns_rdataset_isassociated(trdataset)) {
-                       dns_rdataset_disassociate(trdataset);
-               }
+               dns_rdataset_cleanup(trdataset);
                ns_client_putrdataset(qctx->client, &trdataset);
 
                /*
index 8173b736c7f912ca5384505c7d9025411e1563a2..6a7a8d25e9b47c8920db30af2b963cc9af2c5d36 100644 (file)
@@ -699,9 +699,7 @@ filter_respond_begin(void *arg, void *cbdata, isc_result_t *resp) {
                result = dns_db_findrdataset(
                        qctx->db, qctx->node, qctx->version, dns_rdatatype_a, 0,
                        qctx->client->inner.now, trdataset, NULL);
-               if (dns_rdataset_isassociated(trdataset)) {
-                       dns_rdataset_disassociate(trdataset);
-               }
+               dns_rdataset_cleanup(trdataset);
                ns_client_putrdataset(qctx->client, &trdataset);
 
                /*
diff --git a/cocci/dns_rdataset_cleanup.spatch b/cocci/dns_rdataset_cleanup.spatch
new file mode 100644 (file)
index 0000000..3f4d577
--- /dev/null
@@ -0,0 +1,17 @@
+@@
+expression R;
+@@
+
+- if (R != NULL && dns_rdataset_isassociated(R)) {
+- dns_rdataset_disassociate(R);
+- }
++ dns_rdataset_cleanup(R);
+
+@@
+expression R;
+@@
+
+- if (dns_rdataset_isassociated(R)) {
+- dns_rdataset_disassociate(R);
+- }
++ dns_rdataset_cleanup(R);
index 467caa2662716cc06dd293ad51ffa57c42a3e6c8..0bdf4a9ad96254c8d383deb0180cf686e1c5e743 100644 (file)
@@ -1103,9 +1103,7 @@ free_adbfetch(dns_adb_t *adb, dns_adbfetch_t **fetchp) {
 
        fetch->magic = 0;
 
-       if (dns_rdataset_isassociated(&fetch->rdataset)) {
-               dns_rdataset_disassociate(&fetch->rdataset);
-       }
+       dns_rdataset_cleanup(&fetch->rdataset);
 
        isc_mem_put(adb->hmctx, fetch, sizeof(*fetch));
 }
@@ -2540,9 +2538,7 @@ dbfind_name(dns_adbname_t *adbname, isc_stdtime_t now, dns_rdatatype_t rdtype) {
                break;
        }
 
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
 
        return result;
 }
@@ -2792,9 +2788,7 @@ cleanup:
        if (fetch != NULL) {
                free_adbfetch(adb, &fetch);
        }
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
 
        return result;
 }
index abfa407857b6047790ec8834458aa74d9aec3fe6..0e2d12f1aa0f004d8fa8b4c149b86c758337d470 100644 (file)
@@ -405,9 +405,7 @@ putrdataset(isc_mem_t *mctx, dns_rdataset_t **rdatasetp) {
        *rdatasetp = NULL;
        REQUIRE(rdataset != NULL);
 
-       if (dns_rdataset_isassociated(rdataset)) {
-               dns_rdataset_disassociate(rdataset);
-       }
+       dns_rdataset_cleanup(rdataset);
 
        isc_mem_put(mctx, rdataset, sizeof(*rdataset));
 }
index 43fc7ca946bcba15ed3efd1734e3774d4c24f648..97ab6db7b2c42489e1ddb19bf188ff073ebf3c2b 100644 (file)
@@ -271,9 +271,7 @@ cleanup:
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
-       if (dns_rdataset_isassociated(&ardataset)) {
-               dns_rdataset_disassociate(&ardataset);
-       }
+       dns_rdataset_cleanup(&ardataset);
        return result;
 }
 
index 0d5ef95c532e72c7fcd338f6cf5b8c6875e6af79..2874341be0d0bcc8337fa93c7cd1d90b3059ebae 100644 (file)
@@ -1459,9 +1459,7 @@ mark_active_keys(dns_dnsseckeylist_t *keylist, dns_rdataset_t *rrsigs) {
                }
        }
 
-       if (dns_rdataset_isassociated(&sigs)) {
-               dns_rdataset_disassociate(&sigs);
-       }
+       dns_rdataset_cleanup(&sigs);
        return result;
 }
 
@@ -1673,9 +1671,7 @@ dns_dnssec_keylistfromrdataset(const dns_name_t *origin, dns_kasp_t *kasp,
        result = ISC_R_SUCCESS;
 
 cleanup:
-       if (dns_rdataset_isassociated(&keys)) {
-               dns_rdataset_disassociate(&keys);
-       }
+       dns_rdataset_cleanup(&keys);
        if (dnskey != NULL) {
                dst_key_free(&dnskey);
        }
index f80c40232ac643ca2f7c1a271157faa1ccf500ab..07cd7c17621d5c679d017cc9a33e936592701561 100644 (file)
@@ -550,9 +550,7 @@ ncache_summary(dns_rdataset_t *rdataset, bool omit_final_dot,
                result = ISC_R_SUCCESS;
        }
 cleanup:
-       if (dns_rdataset_isassociated(&rds)) {
-               dns_rdataset_disassociate(&rds);
-       }
+       dns_rdataset_cleanup(&rds);
 
        return result;
 }
index 2d71e97df48eb820e811de63a5e7723004857581..1a7181b10521eaf35b8fc5a655e4da6eee9a7d5d 100644 (file)
@@ -1019,9 +1019,7 @@ getquestions(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t dctx,
 
 cleanup:
        if (rdataset != NULL) {
-               if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
-               }
+               dns_rdataset_cleanup(rdataset);
                dns_message_puttemprdataset(msg, &rdataset);
        }
 
@@ -3177,9 +3175,7 @@ dns_message_checksig(dns_message_t *msg, dns_view_t *view) {
                }
 
        freesig:
-               if (dns_rdataset_isassociated(&keyset)) {
-                       dns_rdataset_disassociate(&keyset);
-               }
+               dns_rdataset_cleanup(&keyset);
                dns_rdata_freestruct(&sig);
                return result;
        }
index 145ada6b171c1d0e7b81ffb1d5b73442387521b8..74fde42ee6e3df8b396b1d9b9790872649b6deb8 100644 (file)
@@ -183,9 +183,7 @@ dns_nsec_build(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node,
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        return result;
 }
 
index bf9c8486ac31603909c584d54dffd6e21c037d51..867aa2b26d1350e3d738d33b5411de2c0083df6d 100644 (file)
@@ -871,9 +871,7 @@ cleanup:
        if (dbit != NULL) {
                dns_dbiterator_destroy(&dbit);
        }
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -934,9 +932,7 @@ dns_nsec3_addnsec3s(dns_db_t *db, dns_dbversion_t *version,
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -1165,9 +1161,7 @@ try_private:
        result = ISC_R_SUCCESS;
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        dns_db_detachnode(&node);
        return result;
 }
@@ -1265,12 +1259,8 @@ try_private:
        result = ISC_R_SUCCESS;
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
-       if (dns_rdataset_isassociated(&prdataset)) {
-               dns_rdataset_disassociate(&prdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
+       dns_rdataset_cleanup(&prdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -1564,9 +1554,7 @@ cleanup:
        if (dbit != NULL) {
                dns_dbiterator_destroy(&dbit);
        }
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -1667,9 +1655,7 @@ try_private:
        result = ISC_R_SUCCESS;
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
index 39c6242e7b3443658f9ce937e0e2f24fae2a5a02..17345e261386f9c5c76521716e4f12bc897fca87 100644 (file)
@@ -90,12 +90,8 @@ dns__nta_destroy(dns__nta_t *nta) {
        REQUIRE(nta->timer == NULL);
 
        nta->magic = 0;
-       if (dns_rdataset_isassociated(&nta->rdataset)) {
-               dns_rdataset_disassociate(&nta->rdataset);
-       }
-       if (dns_rdataset_isassociated(&nta->sigrdataset)) {
-               dns_rdataset_disassociate(&nta->sigrdataset);
-       }
+       dns_rdataset_cleanup(&nta->rdataset);
+       dns_rdataset_cleanup(&nta->sigrdataset);
        if (nta->fetch != NULL) {
                dns_resolver_cancelfetch(nta->fetch);
                dns_resolver_destroyfetch(&nta->fetch);
@@ -157,12 +153,8 @@ fetch_done(void *arg) {
        dns_view_t *view = ntatable->view;
        isc_stdtime_t now = isc_stdtime_now();
 
-       if (dns_rdataset_isassociated(&nta->rdataset)) {
-               dns_rdataset_disassociate(&nta->rdataset);
-       }
-       if (dns_rdataset_isassociated(&nta->sigrdataset)) {
-               dns_rdataset_disassociate(&nta->sigrdataset);
-       }
+       dns_rdataset_cleanup(&nta->rdataset);
+       dns_rdataset_cleanup(&nta->sigrdataset);
        if (nta->fetch == resp->fetch) {
                nta->fetch = NULL;
        }
@@ -217,12 +209,8 @@ checkbogus(void *arg) {
                dns_resolver_cancelfetch(nta->fetch);
                nta->fetch = NULL;
        }
-       if (dns_rdataset_isassociated(&nta->rdataset)) {
-               dns_rdataset_disassociate(&nta->rdataset);
-       }
-       if (dns_rdataset_isassociated(&nta->sigrdataset)) {
-               dns_rdataset_disassociate(&nta->sigrdataset);
-       }
+       dns_rdataset_cleanup(&nta->rdataset);
+       dns_rdataset_cleanup(&nta->sigrdataset);
 
        if (atomic_load(&ntatable->shuttingdown)) {
                isc_timer_stop(nta->timer);
index 8982b7a73f6cb5d7e2dbba6cc13101ae6e36f846..510b8fb08010f94cc5a3c5e7b8192456ea04658a 100644 (file)
@@ -272,15 +272,9 @@ dns_private_chains(dns_db_t *db, dns_dbversion_t *ver,
 success:
        result = ISC_R_SUCCESS;
 cleanup:
-       if (dns_rdataset_isassociated(&nsecset)) {
-               dns_rdataset_disassociate(&nsecset);
-       }
-       if (dns_rdataset_isassociated(&nsec3paramset)) {
-               dns_rdataset_disassociate(&nsec3paramset);
-       }
-       if (dns_rdataset_isassociated(&privateset)) {
-               dns_rdataset_disassociate(&privateset);
-       }
+       dns_rdataset_cleanup(&nsecset);
+       dns_rdataset_cleanup(&nsec3paramset);
+       dns_rdataset_cleanup(&privateset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
index afb530ef8afef241a7ca4adc9c3a6827733756b8..e6d3618a9617c9f54107faac40d493528b484a3b 100644 (file)
@@ -443,19 +443,11 @@ free_glue(isc_mem_t *mctx, dns_glue_t *glue) {
        while (glue != NULL) {
                dns_glue_t *next = glue->next;
 
-               if (dns_rdataset_isassociated(&glue->rdataset_a)) {
-                       dns_rdataset_disassociate(&glue->rdataset_a);
-               }
-               if (dns_rdataset_isassociated(&glue->sigrdataset_a)) {
-                       dns_rdataset_disassociate(&glue->sigrdataset_a);
-               }
+               dns_rdataset_cleanup(&glue->rdataset_a);
+               dns_rdataset_cleanup(&glue->sigrdataset_a);
 
-               if (dns_rdataset_isassociated(&glue->rdataset_aaaa)) {
-                       dns_rdataset_disassociate(&glue->rdataset_aaaa);
-               }
-               if (dns_rdataset_isassociated(&glue->sigrdataset_aaaa)) {
-                       dns_rdataset_disassociate(&glue->sigrdataset_aaaa);
-               }
+               dns_rdataset_cleanup(&glue->rdataset_aaaa);
+               dns_rdataset_cleanup(&glue->sigrdataset_aaaa);
 
                dns_rdataset_invalidate(&glue->rdataset_a);
                dns_rdataset_invalidate(&glue->sigrdataset_a);
@@ -5210,19 +5202,11 @@ glue_nsdname_cb(void *arg, const dns_name_t *name, dns_rdatatype_t qtype,
 
        result = ISC_R_SUCCESS;
 
-       if (dns_rdataset_isassociated(&rdataset_a)) {
-               dns_rdataset_disassociate(&rdataset_a);
-       }
-       if (dns_rdataset_isassociated(&sigrdataset_a)) {
-               dns_rdataset_disassociate(&sigrdataset_a);
-       }
+       dns_rdataset_cleanup(&rdataset_a);
+       dns_rdataset_cleanup(&sigrdataset_a);
 
-       if (dns_rdataset_isassociated(&rdataset_aaaa)) {
-               dns_rdataset_disassociate(&rdataset_aaaa);
-       }
-       if (dns_rdataset_isassociated(&sigrdataset_aaaa)) {
-               dns_rdataset_disassociate(&sigrdataset_aaaa);
-       }
+       dns_rdataset_cleanup(&rdataset_aaaa);
+       dns_rdataset_cleanup(&sigrdataset_aaaa);
 
        if (node_a != NULL) {
                dns__db_detachnode((dns_dbnode_t **)&node_a DNS__DB_FLARG_PASS);
@@ -5482,9 +5466,7 @@ failure:
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
-       if (dns_rdataset_isassociated(&ardataset)) {
-               dns_rdataset_disassociate(&ardataset);
-       }
+       dns_rdataset_cleanup(&ardataset);
        return result;
 }
 
index 989f892f6aeb2071c6c5c0dd6e1ce1d06fe714e1..09854aa750ed032168c8361c6008b961dc46c842 100644 (file)
@@ -4491,9 +4491,7 @@ resume_qmin(void *arg) {
                break;
        }
 
-       if (dns_rdataset_isassociated(&fctx->nameservers)) {
-               dns_rdataset_disassociate(&fctx->nameservers);
-       }
+       dns_rdataset_cleanup(&fctx->nameservers);
 
        if (dns_rdatatype_atparent(fctx->type)) {
                findoptions |= DNS_DBFIND_NOEXACT;
@@ -4552,12 +4550,8 @@ cleanup:
        if (db != NULL) {
                dns_db_detach(&db);
        }
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
-       if (dns_rdataset_isassociated(&sigrdataset)) {
-               dns_rdataset_disassociate(&sigrdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
+       dns_rdataset_cleanup(&sigrdataset);
        if (result != ISC_R_SUCCESS) {
                /* An error occurred, tear down whole fctx */
                fctx_failure_unref(fctx, result);
@@ -4634,9 +4628,7 @@ fctx__destroy(fetchctx_t *fctx, const char *func, const char *file,
        }
        fcount_decr(fctx);
        dns_message_detach(&fctx->qmessage);
-       if (dns_rdataset_isassociated(&fctx->nameservers)) {
-               dns_rdataset_disassociate(&fctx->nameservers);
-       }
+       dns_rdataset_cleanup(&fctx->nameservers);
        dns_db_detach(&fctx->cache);
        dns_adb_detach(&fctx->adb);
        dns_dispatchmgr_detach(&fctx->dispatchmgr);
@@ -5097,9 +5089,7 @@ cleanup_fcount:
        fcount_decr(fctx);
 
 cleanup_nameservers:
-       if (dns_rdataset_isassociated(&fctx->nameservers)) {
-               dns_rdataset_disassociate(&fctx->nameservers);
-       }
+       dns_rdataset_cleanup(&fctx->nameservers);
        isc_mem_free(fctx->mctx, fctx->info);
        if (fctx->nfails != NULL) {
                isc_counter_detach(&fctx->nfails);
@@ -6939,17 +6929,13 @@ resume_dslookup(void *arg) {
        case ISC_R_SUCCESS:
                FCTXTRACE("resuming DS lookup");
 
-               if (dns_rdataset_isassociated(&fctx->nameservers)) {
-                       dns_rdataset_disassociate(&fctx->nameservers);
-               }
+               dns_rdataset_cleanup(&fctx->nameservers);
                dns_rdataset_clone(frdataset, &fctx->nameservers);
 
                /*
                 * Disassociate now the NS's are saved.
                 */
-               if (dns_rdataset_isassociated(frdataset)) {
-                       dns_rdataset_disassociate(frdataset);
-               }
+               dns_rdataset_cleanup(frdataset);
 
                fctx->ns_ttl = fctx->nameservers.ttl;
                fctx->ns_ttl_ok = true;
@@ -6967,18 +6953,14 @@ resume_dslookup(void *arg) {
        case ISC_R_CANCELED:
                /* Don't try anymore. */
                /* Can't be done in cleanup. */
-               if (dns_rdataset_isassociated(frdataset)) {
-                       dns_rdataset_disassociate(frdataset);
-               }
+               dns_rdataset_cleanup(frdataset);
                goto cleanup;
 
        default:
                /*
                 * Disassociate for the next dns_resolver_createfetch call.
                 */
-               if (dns_rdataset_isassociated(frdataset)) {
-                       dns_rdataset_disassociate(frdataset);
-               }
+               dns_rdataset_cleanup(frdataset);
 
                /*
                 * If the chain of resume_dslookup() invocations managed to
@@ -7020,9 +7002,7 @@ resume_dslookup(void *arg) {
                        }
                }
 
-               if (dns_rdataset_isassociated(&nameservers)) {
-                       dns_rdataset_disassociate(&nameservers);
-               }
+               dns_rdataset_cleanup(&nameservers);
        }
 
 cleanup:
@@ -9132,9 +9112,7 @@ rctx_referral(respctx_t *rctx) {
        INSIST(dns_name_countlabels(fctx->domain) > 0);
        fcount_decr(fctx);
 
-       if (dns_rdataset_isassociated(&fctx->nameservers)) {
-               dns_rdataset_disassociate(&fctx->nameservers);
-       }
+       dns_rdataset_cleanup(&fctx->nameservers);
 
        dns_name_copy(rctx->ns_name, fctx->domain);
 
@@ -9902,9 +9880,7 @@ prime_done(void *arg) {
        if (resp->db != NULL) {
                dns_db_detach(&resp->db);
        }
-       if (dns_rdataset_isassociated(resp->rdataset)) {
-               dns_rdataset_disassociate(resp->rdataset);
-       }
+       dns_rdataset_cleanup(resp->rdataset);
        INSIST(resp->sigrdataset == NULL);
 
        isc_mem_put(res->mctx, resp->rdataset, sizeof(*resp->rdataset));
@@ -10090,9 +10066,7 @@ fctx_minimize_qname(fetchctx_t *fctx) {
                        result = dns_db_find(fctx->cache, &name, NULL,
                                             dns_rdatatype_ns, 0, 0, NULL,
                                             fname, &rdataset, NULL);
-                       if (dns_rdataset_isassociated(&rdataset)) {
-                               dns_rdataset_disassociate(&rdataset);
-                       }
+                       dns_rdataset_cleanup(&rdataset);
                        switch (result) {
                        case ISC_R_SUCCESS:
                        case DNS_R_CNAME:
index f5eadd98396acd5279b97948105b7b6c60c621f6..3306dbec944d63fc220ecd04594796da8bb96e5b 100644 (file)
@@ -170,9 +170,7 @@ check_hints(dns_db_t *db) {
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rootns)) {
-               dns_rdataset_disassociate(&rootns);
-       }
+       dns_rdataset_cleanup(&rootns);
        if (rdsiter != NULL) {
                dns_rdatasetiter_destroy(&rdsiter);
        }
@@ -368,12 +366,8 @@ check_address_records(dns_view_t *view, dns_db_t *hints, dns_db_t *db,
                        report(view, name, true, &rdata);
                }
        }
-       if (dns_rdataset_isassociated(&rootrrset)) {
-               dns_rdataset_disassociate(&rootrrset);
-       }
-       if (dns_rdataset_isassociated(&hintrrset)) {
-               dns_rdataset_disassociate(&hintrrset);
-       }
+       dns_rdataset_cleanup(&rootrrset);
+       dns_rdataset_cleanup(&hintrrset);
 
        /*
         * Check AAAA records.
@@ -414,12 +408,8 @@ check_address_records(dns_view_t *view, dns_db_t *hints, dns_db_t *db,
                        report(view, name, true, &rdata);
                }
        }
-       if (dns_rdataset_isassociated(&rootrrset)) {
-               dns_rdataset_disassociate(&rootrrset);
-       }
-       if (dns_rdataset_isassociated(&hintrrset)) {
-               dns_rdataset_disassociate(&hintrrset);
-       }
+       dns_rdataset_cleanup(&rootrrset);
+       dns_rdataset_cleanup(&hintrrset);
 }
 
 void
@@ -513,10 +503,6 @@ dns_root_checkhints(dns_view_t *view, dns_db_t *hints, dns_db_t *db) {
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rootns)) {
-               dns_rdataset_disassociate(&rootns);
-       }
-       if (dns_rdataset_isassociated(&hintns)) {
-               dns_rdataset_disassociate(&hintns);
-       }
+       dns_rdataset_cleanup(&rootns);
+       dns_rdataset_cleanup(&hintns);
 }
index 3e468cbe5facde402052158cae4560fe99939bb2..ef7d350542f6703b65cbc1365e9c735c56f39aba 100644 (file)
@@ -57,9 +57,7 @@ isc_result_t
 dns_rriterator_first(dns_rriterator_t *it) {
        REQUIRE(VALID_RRITERATOR(it));
        /* Reset state */
-       if (dns_rdataset_isassociated(&it->rdataset)) {
-               dns_rdataset_disassociate(&it->rdataset);
-       }
+       dns_rdataset_cleanup(&it->rdataset);
        if (it->rdatasetit != NULL) {
                dns_rdatasetiter_destroy(&it->rdatasetit);
        }
@@ -108,9 +106,7 @@ dns_rriterator_first(dns_rriterator_t *it) {
 isc_result_t
 dns_rriterator_nextrrset(dns_rriterator_t *it) {
        REQUIRE(VALID_RRITERATOR(it));
-       if (dns_rdataset_isassociated(&it->rdataset)) {
-               dns_rdataset_disassociate(&it->rdataset);
-       }
+       dns_rdataset_cleanup(&it->rdataset);
        it->result = dns_rdatasetiter_next(it->rdatasetit);
        /*
         * The while loop body is executed more than once
@@ -177,9 +173,7 @@ dns_rriterator_pause(dns_rriterator_t *it) {
 void
 dns_rriterator_destroy(dns_rriterator_t *it) {
        REQUIRE(VALID_RRITERATOR(it));
-       if (dns_rdataset_isassociated(&it->rdataset)) {
-               dns_rdataset_disassociate(&it->rdataset);
-       }
+       dns_rdataset_cleanup(&it->rdataset);
        if (it->rdatasetit != NULL) {
                dns_rdatasetiter_destroy(&it->rdatasetit);
        }
index aa6e58305c7bb9c2e33446b0cb2b0378bdf18ecc..218e45272c6ba85b373111e99de2d695b02f3513 100644 (file)
@@ -845,11 +845,7 @@ find(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version,
                        {
                                result = DNS_R_ZONECUT;
                                dns_rdataset_disassociate(rdataset);
-                               if (sigrdataset != NULL &&
-                                   dns_rdataset_isassociated(sigrdataset))
-                               {
-                                       dns_rdataset_disassociate(sigrdataset);
-                               }
+                               dns_rdataset_cleanup(sigrdataset);
                                break;
                        } else if (result == ISC_R_SUCCESS) {
                                result = DNS_R_DELEGATION;
index 028aed74deecb7aa9de157b632d399996b4810e4..9f71c4e41cfc76cc5e76a82e0f8d2eb8f5520c25 100644 (file)
@@ -142,9 +142,7 @@ free_namelist(dns_message_t *msg, dns_namelist_t *namelist) {
                ISC_LIST_UNLINK(*namelist, name, link);
                ISC_LIST_FOREACH(name->list, set, link) {
                        ISC_LIST_UNLINK(name->list, set, link);
-                       if (dns_rdataset_isassociated(set)) {
-                               dns_rdataset_disassociate(set);
-                       }
+                       dns_rdataset_cleanup(set);
                        dns_message_puttemprdataset(msg, &set);
                }
                dns_message_puttempname(msg, &name);
index 99f8318d53738e28faaf8467ea6309ed487d7ee5..f05330e25adcb64360f6f261735ea8865a24ccc9 100644 (file)
@@ -1137,9 +1137,7 @@ add_sigs(dns_update_log_t *log, dns_zone_t *zone, dns_db_t *db,
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
index b3a0b0513ddda8b3e4b0f360deb023c509d7b046..6b9ce6e07107260150ae3c5894d92fdea08d34b0 100644 (file)
@@ -191,15 +191,9 @@ validator_addede(dns_validator_t *val, uint16_t code, const char *extra);
  */
 static void
 disassociate_rdatasets(dns_validator_t *val) {
-       if (dns_rdataset_isassociated(&val->fdsset)) {
-               dns_rdataset_disassociate(&val->fdsset);
-       }
-       if (dns_rdataset_isassociated(&val->frdataset)) {
-               dns_rdataset_disassociate(&val->frdataset);
-       }
-       if (dns_rdataset_isassociated(&val->fsigrdataset)) {
-               dns_rdataset_disassociate(&val->fsigrdataset);
-       }
+       dns_rdataset_cleanup(&val->fdsset);
+       dns_rdataset_cleanup(&val->frdataset);
+       dns_rdataset_cleanup(&val->fsigrdataset);
 }
 
 /*%
@@ -436,9 +430,7 @@ fetch_callback_dnskey(void *arg) {
        if (resp->db != NULL) {
                dns_db_detach(&resp->db);
        }
-       if (dns_rdataset_isassociated(&val->fsigrdataset)) {
-               dns_rdataset_disassociate(&val->fsigrdataset);
-       }
+       dns_rdataset_cleanup(&val->fsigrdataset);
 
        validator_log(val, ISC_LOG_DEBUG(3), "in fetch_callback_dnskey");
 
@@ -531,9 +523,7 @@ fetch_callback_ds(void *arg) {
        if (resp->db != NULL) {
                dns_db_detach(&resp->db);
        }
-       if (dns_rdataset_isassociated(&val->fsigrdataset)) {
-               dns_rdataset_disassociate(&val->fsigrdataset);
-       }
+       dns_rdataset_cleanup(&val->fsigrdataset);
 
        validator_log(val, ISC_LOG_DEBUG(3), "in fetch_callback_ds");
 
@@ -1208,9 +1198,7 @@ seek_dnskey(dns_validator_t *val) {
                        {
                                dns_rdataset_disassociate(&val->frdataset);
                        }
-                       if (dns_rdataset_isassociated(&val->fsigrdataset)) {
-                               dns_rdataset_disassociate(&val->fsigrdataset);
-                       }
+                       dns_rdataset_cleanup(&val->fsigrdataset);
 
                        return validate_helper_run(val, resume_answer_with_key);
                }
@@ -1247,9 +1235,7 @@ seek_dnskey(dns_validator_t *val) {
        {
                dns_rdataset_disassociate(&val->frdataset);
        }
-       if (dns_rdataset_isassociated(&val->fsigrdataset)) {
-               dns_rdataset_disassociate(&val->fsigrdataset);
-       }
+       dns_rdataset_cleanup(&val->fsigrdataset);
 
        return result;
 }
@@ -2486,9 +2472,7 @@ checkwildcard(dns_validator_t *val, dns_rdatatype_t type,
                        if (!exists && NEEDNOQNAME(val)) {
                                proofs[DNS_VALIDATOR_NOWILDCARDPROOF] = name;
                        }
-                       if (dns_rdataset_isassociated(&trdataset)) {
-                               dns_rdataset_disassociate(&trdataset);
-                       }
+                       dns_rdataset_cleanup(&trdataset);
                        return ISC_R_SUCCESS;
                }
 
@@ -2513,18 +2497,14 @@ checkwildcard(dns_validator_t *val, dns_rdatatype_t type,
                        if (!exists && NEEDNOQNAME(val)) {
                                proofs[DNS_VALIDATOR_NOWILDCARDPROOF] = name;
                        }
-                       if (dns_rdataset_isassociated(&trdataset)) {
-                               dns_rdataset_disassociate(&trdataset);
-                       }
+                       dns_rdataset_cleanup(&trdataset);
                        return ISC_R_SUCCESS;
                }
        }
        if (result == ISC_R_NOMORE) {
                result = ISC_R_SUCCESS;
        }
-       if (dns_rdataset_isassociated(&trdataset)) {
-               dns_rdataset_disassociate(&trdataset);
-       }
+       dns_rdataset_cleanup(&trdataset);
        return result;
 }
 
@@ -2573,9 +2553,7 @@ findnsec3proofs(dns_validator_t *val) {
                                                 NULL, NULL, NULL, NULL, NULL,
                                                 NULL, validator_log, val);
                if (result != ISC_R_IGNORE && result != ISC_R_SUCCESS) {
-                       if (dns_rdataset_isassociated(&trdataset)) {
-                               dns_rdataset_disassociate(&trdataset);
-                       }
+                       dns_rdataset_cleanup(&trdataset);
                        return result;
                }
        }
@@ -2585,9 +2563,7 @@ findnsec3proofs(dns_validator_t *val) {
        POST(result);
 
        if (dns_name_countlabels(zonename) == 0) {
-               if (dns_rdataset_isassociated(&trdataset)) {
-                       dns_rdataset_disassociate(&trdataset);
-               }
+               dns_rdataset_cleanup(&trdataset);
                return ISC_R_SUCCESS;
        }
 
@@ -2656,9 +2632,7 @@ findnsec3proofs(dns_validator_t *val) {
                        {
                                proofs[DNS_VALIDATOR_NOWILDCARDPROOF] = name;
                        }
-                       if (dns_rdataset_isassociated(&trdataset)) {
-                               dns_rdataset_disassociate(&trdataset);
-                       }
+                       dns_rdataset_cleanup(&trdataset);
                        return result;
                }
                if (result != ISC_R_SUCCESS) {
@@ -2711,15 +2685,11 @@ findnsec3proofs(dns_validator_t *val) {
        {
                result = checkwildcard(val, dns_rdatatype_nsec3, zonename);
                if (result != ISC_R_SUCCESS) {
-                       if (dns_rdataset_isassociated(&trdataset)) {
-                               dns_rdataset_disassociate(&trdataset);
-                       }
+                       dns_rdataset_cleanup(&trdataset);
                        return result;
                }
        }
-       if (dns_rdataset_isassociated(&trdataset)) {
-               dns_rdataset_disassociate(&trdataset);
-       }
+       dns_rdataset_cleanup(&trdataset);
        return result;
 }
 
@@ -3165,11 +3135,7 @@ seek_ds(dns_validator_t *val, isc_result_t *resp) {
                                       *keysetp = NULL;
 
                        if (check_ds_private(&val->frdataset)) {
-                               if (dns_rdataset_isassociated(&val->dsrdataset))
-                               {
-                                       dns_rdataset_disassociate(
-                                               &val->dsrdataset);
-                               }
+                               dns_rdataset_cleanup(&val->dsrdataset);
                                dns_rdataset_clone(&val->frdataset,
                                                   &val->dsrdataset);
                                dssetp = &val->dsrdataset;
@@ -3454,11 +3420,7 @@ proveunsecure(dns_validator_t *val, bool have_ds, bool have_dnskey,
                        }
 
                        if (!have_dnskey && check_ds_private(&val->frdataset)) {
-                               if (dns_rdataset_isassociated(&val->dsrdataset))
-                               {
-                                       dns_rdataset_disassociate(
-                                               &val->dsrdataset);
-                               }
+                               dns_rdataset_cleanup(&val->dsrdataset);
                                dns_rdataset_clone(&val->frdataset,
                                                   &val->dsrdataset);
                                dssetp = &val->dsrdataset;
@@ -3780,9 +3742,7 @@ destroy_validator(dns_validator_t *val) {
                dns_keytable_detach(&val->keytable);
        }
        disassociate_rdatasets(val);
-       if (dns_rdataset_isassociated(&val->dsrdataset)) {
-               dns_rdataset_disassociate(&val->dsrdataset);
-       }
+       dns_rdataset_cleanup(&val->dsrdataset);
        mctx = val->view->mctx;
        if (val->siginfo != NULL) {
                isc_mem_put(mctx, val->siginfo, sizeof(*val->siginfo));
index 492cab865aec1b7cd1dd84a574f5e0a69f0c5ef1..2c5cf4ade1c146033afaf48a7bbbbca78f57214d 100644 (file)
@@ -820,14 +820,8 @@ db_find:
                             foundname, rdataset, sigrdataset);
 
        if (result == DNS_R_DELEGATION || result == ISC_R_NOTFOUND) {
-               if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
-               }
-               if (sigrdataset != NULL &&
-                   dns_rdataset_isassociated(sigrdataset))
-               {
-                       dns_rdataset_disassociate(sigrdataset);
-               }
+               dns_rdataset_cleanup(rdataset);
+               dns_rdataset_cleanup(sigrdataset);
                if (node != NULL) {
                        dns_db_detachnode(&node);
                }
@@ -881,14 +875,8 @@ db_find:
        if (result == ISC_R_NOTFOUND && !is_staticstub_zone && use_hints &&
            view->hints != NULL)
        {
-               if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
-               }
-               if (sigrdataset != NULL &&
-                   dns_rdataset_isassociated(sigrdataset))
-               {
-                       dns_rdataset_disassociate(sigrdataset);
-               }
+               dns_rdataset_cleanup(rdataset);
+               dns_rdataset_cleanup(sigrdataset);
                if (db != NULL) {
                        if (node != NULL) {
                                dns_db_detachnode(&node);
@@ -929,9 +917,7 @@ db_find:
 cleanup:
        if (dns_rdataset_isassociated(&zrdataset)) {
                dns_rdataset_disassociate(&zrdataset);
-               if (dns_rdataset_isassociated(&zsigrdataset)) {
-                       dns_rdataset_disassociate(&zsigrdataset);
-               }
+               dns_rdataset_cleanup(&zsigrdataset);
        }
 
        if (zdb != NULL) {
@@ -984,27 +970,15 @@ dns_view_simplefind(dns_view_t *view, const dns_name_t *name,
                 * foundname is not returned by this simplified API.  We
                 * disassociate them here to prevent any misuse by the caller.
                 */
-               if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
-               }
-               if (sigrdataset != NULL &&
-                   dns_rdataset_isassociated(sigrdataset))
-               {
-                       dns_rdataset_disassociate(sigrdataset);
-               }
+               dns_rdataset_cleanup(rdataset);
+               dns_rdataset_cleanup(sigrdataset);
        } else if (result != ISC_R_SUCCESS && result != DNS_R_GLUE &&
                   result != DNS_R_HINT && result != DNS_R_NCACHENXDOMAIN &&
                   result != DNS_R_NCACHENXRRSET && result != DNS_R_NXRRSET &&
                   result != DNS_R_HINTNXRRSET && result != ISC_R_NOTFOUND)
        {
-               if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
-               }
-               if (sigrdataset != NULL &&
-                   dns_rdataset_isassociated(sigrdataset))
-               {
-                       dns_rdataset_disassociate(sigrdataset);
-               }
+               dns_rdataset_cleanup(rdataset);
+               dns_rdataset_cleanup(sigrdataset);
                result = ISC_R_NOTFOUND;
        }
 
@@ -1165,11 +1139,7 @@ finish:
        if (use_zone) {
                if (dns_rdataset_isassociated(rdataset)) {
                        dns_rdataset_disassociate(rdataset);
-                       if (sigrdataset != NULL &&
-                           dns_rdataset_isassociated(sigrdataset))
-                       {
-                               dns_rdataset_disassociate(sigrdataset);
-                       }
+                       dns_rdataset_cleanup(sigrdataset);
                }
                dns_name_copy(zfname, fname);
                if (dcname != NULL) {
@@ -1193,9 +1163,7 @@ finish:
                         * We can't even find the hints for the root
                         * nameservers!
                         */
-                       if (dns_rdataset_isassociated(rdataset)) {
-                               dns_rdataset_disassociate(rdataset);
-                       }
+                       dns_rdataset_cleanup(rdataset);
                        result = ISC_R_NOTFOUND;
                } else if (dcname != NULL) {
                        dns_name_copy(fname, dcname);
@@ -1205,9 +1173,7 @@ finish:
 cleanup:
        if (dns_rdataset_isassociated(&zrdataset)) {
                dns_rdataset_disassociate(&zrdataset);
-               if (dns_rdataset_isassociated(&zsigrdataset)) {
-                       dns_rdataset_disassociate(&zsigrdataset);
-               }
+               dns_rdataset_cleanup(&zsigrdataset);
        }
        if (db != NULL) {
                dns_db_detach(&db);
@@ -1644,9 +1610,7 @@ dns_view_istrusted(dns_view_t *view, const dns_name_t *keyname,
        }
 
 finish:
-       if (dns_rdataset_isassociated(&dsset)) {
-               dns_rdataset_disassociate(&dsset);
-       }
+       dns_rdataset_cleanup(&dsset);
        if (knode != NULL) {
                dns_keynode_detach(&knode);
        }
index 1637af0e89f50dcc2a3f7a832d745dc72a37bf32..50b29b3d0f8088c0d8bcde4bcf5131e1fdd53412 100644 (file)
@@ -3133,9 +3133,7 @@ zone_check_glue(dns_zone_t *zone, dns_db_t *db, bool *has_a, bool *has_aaaa,
        case DNS_R_CNAME:
                break;
        default:
-               if (dns_rdataset_isassociated(&a)) {
-                       dns_rdataset_disassociate(&a);
-               }
+               dns_rdataset_cleanup(&a);
                result = dns_db_find(db, name, NULL, dns_rdatatype_a,
                                     DNS_DBFIND_GLUEOK, 0, NULL, foundname, &a,
                                     NULL);
@@ -3150,9 +3148,7 @@ zone_check_glue(dns_zone_t *zone, dns_db_t *db, bool *has_a, bool *has_aaaa,
                        if (result == ISC_R_SUCCESS) {
                                *has_aaaa = true;
                        }
-                       if (dns_rdataset_isassociated(&aaaa)) {
-                               dns_rdataset_disassociate(&aaaa);
-                       }
+                       dns_rdataset_cleanup(&aaaa);
                }
                return true;
        } else if (result == DNS_R_GLUE && has_a != NULL) {
@@ -3168,9 +3164,7 @@ zone_check_glue(dns_zone_t *zone, dns_db_t *db, bool *has_a, bool *has_aaaa,
                                      DNS_DBFIND_GLUEOK, 0, NULL, foundname,
                                      &aaaa, NULL);
                if (tresult == ISC_R_SUCCESS) {
-                       if (dns_rdataset_isassociated(&a)) {
-                               dns_rdataset_disassociate(&a);
-                       }
+                       dns_rdataset_cleanup(&a);
                        SET_IF_NOT_NULL(has_aaaa, true);
                        dns_rdataset_disassociate(&aaaa);
                        return true;
@@ -3189,12 +3183,8 @@ zone_check_glue(dns_zone_t *zone, dns_db_t *db, bool *has_a, bool *has_aaaa,
                                answer = (zone->checkns)(zone, name, owner, &a,
                                                         &aaaa);
                        }
-                       if (dns_rdataset_isassociated(&a)) {
-                               dns_rdataset_disassociate(&a);
-                       }
-                       if (dns_rdataset_isassociated(&aaaa)) {
-                               dns_rdataset_disassociate(&aaaa);
-                       }
+                       dns_rdataset_cleanup(&a);
+                       dns_rdataset_cleanup(&aaaa);
                        return answer;
                }
        }
@@ -3247,12 +3237,8 @@ zone_check_glue(dns_zone_t *zone, dns_db_t *db, bool *has_a, bool *has_aaaa,
                /* answer = false; */
        }
 
-       if (dns_rdataset_isassociated(&a)) {
-               dns_rdataset_disassociate(&a);
-       }
-       if (dns_rdataset_isassociated(&aaaa)) {
-               dns_rdataset_disassociate(&aaaa);
-       }
+       dns_rdataset_cleanup(&a);
+       dns_rdataset_cleanup(&aaaa);
        return answer;
 }
 
@@ -3411,9 +3397,7 @@ zone_is_served_by(dns_zone_t *zone, dns_db_t *db, dns_rdatatype_t type,
        dns_rdataset_init(&rdataset);
        result = dns_db_find(db, name, NULL, type, 0, 0, NULL, foundname,
                             &rdataset, NULL);
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        switch (result) {
        case DNS_R_DELEGATION:
                if (zone->checkisservedby != NULL) {
@@ -3762,9 +3746,7 @@ integrity_checks(dns_zone_t *zone, dns_db_t *db) {
                result = dns_db_find(db, &zone->origin, NULL, dns_rdatatype_ns,
                                     0, 0, NULL, name, &rdataset, NULL);
                if (result != ISC_R_SUCCESS) {
-                       if (dns_rdataset_isassociated(&rdataset)) {
-                               dns_rdataset_disassociate(&rdataset);
-                       }
+                       dns_rdataset_cleanup(&rdataset);
                        goto cleanup;
                }
 
@@ -3794,9 +3776,7 @@ integrity_checks(dns_zone_t *zone, dns_db_t *db) {
                result = dns_db_find(db, &zone->origin, NULL, dns_rdatatype_ns,
                                     0, 0, NULL, name, &rdataset, NULL);
                if (result != ISC_R_SUCCESS) {
-                       if (dns_rdataset_isassociated(&rdataset)) {
-                               dns_rdataset_disassociate(&rdataset);
-                       }
+                       dns_rdataset_cleanup(&rdataset);
                        goto cleanup;
                }
 
@@ -4434,9 +4414,7 @@ check_nsec3param(dns_zone_t *zone, dns_db_t *db) {
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        dns_db_closeversion(db, &version, false);
        dns_db_detachnode(&node);
        return result;
@@ -6775,9 +6753,7 @@ findzonekeys(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver,
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (pubkey != NULL) {
                dst_key_free(&pubkey);
        }
@@ -6904,9 +6880,7 @@ dns_zone_getdnsseckeys(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver,
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&keyset)) {
-               dns_rdataset_disassociate(&keyset);
-       }
+       dns_rdataset_cleanup(&keyset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -7458,9 +7432,7 @@ add_sigs(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_zone_t *zone,
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -7981,9 +7953,7 @@ sign_a_node(dns_db_t *db, dns_zone_t *zone, dns_name_t *name,
        DNS_RDATASETITER_FOREACH(iterator) {
                isc_stdtime_t when;
 
-               if (dns_rdataset_isassociated(&rdataset)) {
-                       dns_rdataset_disassociate(&rdataset);
-               }
+               dns_rdataset_cleanup(&rdataset);
 
                dns_rdatasetiter_current(iterator, &rdataset);
                if (rdataset.type == dns_rdatatype_soa ||
@@ -8061,9 +8031,7 @@ sign_a_node(dns_db_t *db, dns_zone_t *zone, dns_name_t *name,
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (iterator != NULL) {
                dns_rdatasetiter_destroy(&iterator);
        }
@@ -8086,9 +8054,7 @@ updatesecure(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name,
                result = dns_db_findrdataset(
                        db, node, version, dns_rdatatype_nsec,
                        dns_rdatatype_none, 0, &rdataset, NULL);
-               if (dns_rdataset_isassociated(&rdataset)) {
-                       dns_rdataset_disassociate(&rdataset);
-               }
+               dns_rdataset_cleanup(&rdataset);
                if (result == ISC_R_NOTFOUND) {
                        goto success;
                }
@@ -8221,9 +8187,7 @@ updatesignwithkey(dns_zone_t *zone, dns_signing_t *signing,
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -8284,9 +8248,7 @@ fixup_nsec3param(dns_db_t *db, dns_dbversion_t *ver, dns_nsec3chain_t *chain,
                ttl = soa.minimum;
                dns_rdata_reset(&rdata);
        }
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
 
        result = dns_db_findrdataset(db, node, ver, dns_rdatatype_nsec3param, 0,
                                     0, &rdataset, NULL);
@@ -8426,9 +8388,7 @@ add:
 
 cleanup:
        dns_db_detachnode(&node);
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        return result;
 }
 
@@ -8573,9 +8533,7 @@ need_nsec_chain(dns_db_t *db, dns_dbversion_t *ver,
        *answer = !active;
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        dns_db_detachnode(&node);
        return result;
 }
@@ -9604,9 +9562,7 @@ del_sig(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name,
         */
        *has_algp = (alg_found && !alg_missed);
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        dns_rdatasetiter_destroy(&iterator);
        return result;
 }
@@ -10603,9 +10559,7 @@ keyfetch_cleanup(dns_zonefetch_t *fetch) {
 
        dns_db_detach(&kfetch->db);
 
-       if (dns_rdataset_isassociated(&kfetch->keydataset)) {
-               dns_rdataset_disassociate(&kfetch->keydataset);
-       }
+       dns_rdataset_cleanup(&kfetch->keydataset);
 }
 
 /*
@@ -16195,25 +16149,19 @@ sync_secure_db(dns_zone_t *seczone, dns_zone_t *raw, dns_db_t *secdb,
                        secdb, node, secver, dns_rdatatype_dnskey,
                        dns_rdatatype_none, 0, &rdataset, NULL);
                keyttl = (result == ISC_R_SUCCESS) ? rdataset.ttl : ttl;
-               if (dns_rdataset_isassociated(&rdataset)) {
-                       dns_rdataset_disassociate(&rdataset);
-               }
+               dns_rdataset_cleanup(&rdataset);
 
                result = dns_db_findrdataset(
                        secdb, node, secver, dns_rdatatype_cdnskey,
                        dns_rdatatype_none, 0, &rdataset, NULL);
                ckeyttl = (result == ISC_R_SUCCESS) ? rdataset.ttl : ttl;
-               if (dns_rdataset_isassociated(&rdataset)) {
-                       dns_rdataset_disassociate(&rdataset);
-               }
+               dns_rdataset_cleanup(&rdataset);
 
                result = dns_db_findrdataset(
                        secdb, node, secver, dns_rdatatype_cds,
                        dns_rdatatype_none, 0, &rdataset, NULL);
                cdsttl = (result == ISC_R_SUCCESS) ? rdataset.ttl : ttl;
-               if (dns_rdataset_isassociated(&rdataset)) {
-                       dns_rdataset_disassociate(&rdataset);
-               }
+               dns_rdataset_cleanup(&rdataset);
                dns_db_detachnode(&node);
        }
 
@@ -16822,12 +16770,8 @@ cleanup:
        if (db != NULL) {
                dns_db_detach(&db);
        }
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
-       if (dns_rdataset_isassociated(&prdataset)) {
-               dns_rdataset_disassociate(&prdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
+       dns_rdataset_cleanup(&prdataset);
        return result;
 }
 
@@ -19988,9 +19932,7 @@ clean_nsec3param(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver,
 
        result = dns_db_findrdataset(db, node, ver, dns_rdatatype_dnskey,
                                     dns_rdatatype_none, 0, &rdataset, NULL);
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (result != ISC_R_NOTFOUND) {
                goto cleanup;
        }
@@ -22077,21 +22019,11 @@ cleanup:
        if (ver != NULL) {
                dns_db_closeversion(db, &ver, false);
        }
-       if (dns_rdataset_isassociated(&cdsset)) {
-               dns_rdataset_disassociate(&cdsset);
-       }
-       if (dns_rdataset_isassociated(&keyset)) {
-               dns_rdataset_disassociate(&keyset);
-       }
-       if (dns_rdataset_isassociated(&keysigs)) {
-               dns_rdataset_disassociate(&keysigs);
-       }
-       if (dns_rdataset_isassociated(&soasigs)) {
-               dns_rdataset_disassociate(&soasigs);
-       }
-       if (dns_rdataset_isassociated(&cdnskeyset)) {
-               dns_rdataset_disassociate(&cdnskeyset);
-       }
+       dns_rdataset_cleanup(&cdsset);
+       dns_rdataset_cleanup(&keyset);
+       dns_rdataset_cleanup(&keysigs);
+       dns_rdataset_cleanup(&soasigs);
+       dns_rdataset_cleanup(&cdnskeyset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -22400,15 +22332,9 @@ dns_zone_cdscheck(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *version) {
        result = ISC_R_SUCCESS;
 
 cleanup:
-       if (dns_rdataset_isassociated(&cds)) {
-               dns_rdataset_disassociate(&cds);
-       }
-       if (dns_rdataset_isassociated(&dnskey)) {
-               dns_rdataset_disassociate(&dnskey);
-       }
-       if (dns_rdataset_isassociated(&cdnskey)) {
-               dns_rdataset_disassociate(&cdnskey);
-       }
+       dns_rdataset_cleanup(&cds);
+       dns_rdataset_cleanup(&dnskey);
+       dns_rdataset_cleanup(&cdnskey);
        dns_db_detachnode(&node);
        return result;
 }
@@ -22751,9 +22677,7 @@ keydone(void *arg) {
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (db != NULL) {
                if (node != NULL) {
                        dns_db_detachnode(&node);
@@ -23103,12 +23027,8 @@ rss_post(void *arg) {
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&prdataset)) {
-               dns_rdataset_disassociate(&prdataset);
-       }
-       if (dns_rdataset_isassociated(&nrdataset)) {
-               dns_rdataset_disassociate(&nrdataset);
-       }
+       dns_rdataset_cleanup(&prdataset);
+       dns_rdataset_cleanup(&nrdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -23272,9 +23192,7 @@ setparam:
        }
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
index 6e9615f7a7769e0336073e93dcf11b7ebe7f8898..27319cc9effa555fed01b229f0011acebeeb1a1a 100644 (file)
@@ -160,12 +160,8 @@ dns_zonefetch_done(void *arg) {
 cleanup:
        isc_refcount_decrement(dns__zone_irefs(zone));
 
-       if (dns_rdataset_isassociated(rrset)) {
-               dns_rdataset_disassociate(rrset);
-       }
-       if (dns_rdataset_isassociated(sigset)) {
-               dns_rdataset_disassociate(sigset);
-       }
+       dns_rdataset_cleanup(rrset);
+       dns_rdataset_cleanup(sigset);
 
        fetch->fetchmethods.cleanup_fetch(fetch);
 
index 5cde1aa4f080b5ad87fb432f11505f1cfd7b3a6e..e0090f17f755a9fd1fec305a61cf1d42dd9b1527 100644 (file)
@@ -159,9 +159,7 @@ has_dname(const vctx_t *vctx, dns_dbnode_t *node) {
        result = dns_db_findrdataset(vctx->db, node, vctx->ver,
                                     dns_rdatatype_dname, 0, 0, &dnameset,
                                     NULL);
-       if (dns_rdataset_isassociated(&dnameset)) {
-               dns_rdataset_disassociate(&dnameset);
-       }
+       dns_rdataset_cleanup(&dnameset);
 
        return result == ISC_R_SUCCESS;
 }
@@ -291,9 +289,7 @@ verifynsec(const vctx_t *vctx, const dns_name_t *name, dns_dbnode_t *node,
        result = ISC_R_SUCCESS;
 
 done:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
 
        return result;
 }
@@ -331,9 +327,7 @@ check_no_rrsig(const vctx_t *vctx, const dns_rdataset_t *rdataset,
                }
                dns_rdataset_disassociate(&sigrdataset);
        }
-       if (dns_rdataset_isassociated(&sigrdataset)) {
-               dns_rdataset_disassociate(&sigrdataset);
-       }
+       dns_rdataset_cleanup(&sigrdataset);
        dns_rdatasetiter_destroy(&rdsiter);
 
        return ISC_R_SUCCESS;
@@ -659,9 +653,7 @@ isoptout(const vctx_t *vctx, const dns_rdata_nsec3param_t *nsec3param,
        *optout = ((nsec3.flags & DNS_NSEC3FLAG_OPTOUT) != 0);
 
 done:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -754,9 +746,7 @@ verifynsec3(const vctx_t *vctx, const dns_name_t *name,
        result = ISC_R_SUCCESS;
 
 done:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -879,9 +869,7 @@ verifyset(vctx_t *vctx, dns_rdataset_t *rdataset, const dns_name_t *name,
        }
 
 done:
-       if (dns_rdataset_isassociated(&sigrdataset)) {
-               dns_rdataset_disassociate(&sigrdataset);
-       }
+       dns_rdataset_cleanup(&sigrdataset);
        dns_rdatasetiter_destroy(&rdsiter);
 
        return result;
@@ -1011,9 +999,7 @@ check_no_nsec(const vctx_t *vctx, const dns_name_t *name, dns_dbnode_t *node) {
                nsec_exists = true;
        }
 
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
 
        return nsec_exists ? ISC_R_FAILURE : ISC_R_SUCCESS;
 }
@@ -1270,30 +1256,14 @@ vctx_init(vctx_t *vctx, isc_mem_t *mctx, dns_zone_t *zone, dns_db_t *db,
 
 static void
 vctx_destroy(vctx_t *vctx) {
-       if (dns_rdataset_isassociated(&vctx->keyset)) {
-               dns_rdataset_disassociate(&vctx->keyset);
-       }
-       if (dns_rdataset_isassociated(&vctx->keysigs)) {
-               dns_rdataset_disassociate(&vctx->keysigs);
-       }
-       if (dns_rdataset_isassociated(&vctx->soaset)) {
-               dns_rdataset_disassociate(&vctx->soaset);
-       }
-       if (dns_rdataset_isassociated(&vctx->soasigs)) {
-               dns_rdataset_disassociate(&vctx->soasigs);
-       }
-       if (dns_rdataset_isassociated(&vctx->nsecset)) {
-               dns_rdataset_disassociate(&vctx->nsecset);
-       }
-       if (dns_rdataset_isassociated(&vctx->nsecsigs)) {
-               dns_rdataset_disassociate(&vctx->nsecsigs);
-       }
-       if (dns_rdataset_isassociated(&vctx->nsec3paramset)) {
-               dns_rdataset_disassociate(&vctx->nsec3paramset);
-       }
-       if (dns_rdataset_isassociated(&vctx->nsec3paramsigs)) {
-               dns_rdataset_disassociate(&vctx->nsec3paramsigs);
-       }
+       dns_rdataset_cleanup(&vctx->keyset);
+       dns_rdataset_cleanup(&vctx->keysigs);
+       dns_rdataset_cleanup(&vctx->soaset);
+       dns_rdataset_cleanup(&vctx->soasigs);
+       dns_rdataset_cleanup(&vctx->nsecset);
+       dns_rdataset_cleanup(&vctx->nsecsigs);
+       dns_rdataset_cleanup(&vctx->nsec3paramset);
+       dns_rdataset_cleanup(&vctx->nsec3paramsigs);
        isc_heap_foreach(vctx->expected_chains, free_element_heap, vctx->mctx);
        isc_heap_destroy(&vctx->expected_chains);
        isc_heap_foreach(vctx->found_chains, free_element_heap, vctx->mctx);
index d35891d45b16ff9fd80f2da29113d20d3448c93c..703dc618230c162d6ed40e52072c39d39e1ff510 100644 (file)
@@ -2985,9 +2985,7 @@ ns_client_putrdataset(ns_client_t *client, dns_rdataset_t **rdatasetp) {
        rdataset = *rdatasetp;
 
        if (rdataset != NULL) {
-               if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
-               }
+               dns_rdataset_cleanup(rdataset);
                dns_message_puttemprdataset(client->message, rdatasetp);
        }
 }
index 929b2bbbcde3145c7dad7dc8c04bcd6e3a98aab5..99c515990870d9b48808310f15c8873160bc7c49 100644 (file)
@@ -1679,15 +1679,9 @@ query_additionalauthfind(dns_db_t *db, dns_dbversion_t *version,
                                client->query.dboptions, client->inner.now,
                                &node, fname, &cm, &ci, rdataset, sigrdataset);
        if (result != ISC_R_SUCCESS) {
-               if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
-               }
+               dns_rdataset_cleanup(rdataset);
 
-               if (sigrdataset != NULL &&
-                   dns_rdataset_isassociated(sigrdataset))
-               {
-                       dns_rdataset_disassociate(sigrdataset);
-               }
+               dns_rdataset_cleanup(sigrdataset);
 
                if (node != NULL) {
                        dns_db_detachnode(&node);
@@ -1911,12 +1905,8 @@ query_additional_cb(void *arg, const dns_name_t *name, dns_rdatatype_t qtype,
                goto found;
        }
 
-       if (dns_rdataset_isassociated(rdataset)) {
-               dns_rdataset_disassociate(rdataset);
-       }
-       if (sigrdataset != NULL && dns_rdataset_isassociated(sigrdataset)) {
-               dns_rdataset_disassociate(sigrdataset);
-       }
+       dns_rdataset_cleanup(rdataset);
+       dns_rdataset_cleanup(sigrdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -2021,16 +2011,12 @@ found:
                 * XXXRTH  This code could be more efficient.
                 */
                if (rdataset != NULL) {
-                       if (dns_rdataset_isassociated(rdataset)) {
-                               dns_rdataset_disassociate(rdataset);
-                       }
+                       dns_rdataset_cleanup(rdataset);
                } else {
                        rdataset = ns_client_newrdataset(client);
                }
                if (sigrdataset != NULL) {
-                       if (dns_rdataset_isassociated(sigrdataset)) {
-                               dns_rdataset_disassociate(sigrdataset);
-                       }
+                       dns_rdataset_cleanup(sigrdataset);
                } else if (WANTDNSSEC(client)) {
                        sigrdataset = ns_client_newrdataset(client);
                }
@@ -2044,11 +2030,7 @@ found:
                        goto addname;
                } else if (result == DNS_R_NCACHENXRRSET) {
                        dns_rdataset_disassociate(rdataset);
-                       if (sigrdataset != NULL &&
-                           dns_rdataset_isassociated(sigrdataset))
-                       {
-                               dns_rdataset_disassociate(sigrdataset);
-                       }
+                       dns_rdataset_cleanup(sigrdataset);
                } else if (result == ISC_R_SUCCESS) {
                        bool invalid = false;
                        mname = NULL;
@@ -2063,11 +2045,7 @@ found:
                        }
                        if (invalid && DNS_TRUST_PENDING(rdataset->trust)) {
                                dns_rdataset_disassociate(rdataset);
-                               if (sigrdataset != NULL &&
-                                   dns_rdataset_isassociated(sigrdataset))
-                               {
-                                       dns_rdataset_disassociate(sigrdataset);
-                               }
+                               dns_rdataset_cleanup(sigrdataset);
                        } else if (!query_isduplicate(client, fname,
                                                      dns_rdatatype_a, &mname))
                        {
@@ -2093,11 +2071,7 @@ found:
                                rdataset = ns_client_newrdataset(client);
                        } else {
                                dns_rdataset_disassociate(rdataset);
-                               if (sigrdataset != NULL &&
-                                   dns_rdataset_isassociated(sigrdataset))
-                               {
-                                       dns_rdataset_disassociate(sigrdataset);
-                               }
+                               dns_rdataset_cleanup(sigrdataset);
                        }
                }
        aaaa_lookup:
@@ -2112,11 +2086,7 @@ found:
                        goto addname;
                } else if (result == DNS_R_NCACHENXRRSET) {
                        dns_rdataset_disassociate(rdataset);
-                       if (sigrdataset != NULL &&
-                           dns_rdataset_isassociated(sigrdataset))
-                       {
-                               dns_rdataset_disassociate(sigrdataset);
-                       }
+                       dns_rdataset_cleanup(sigrdataset);
                } else if (result == ISC_R_SUCCESS) {
                        bool invalid = false;
                        mname = NULL;
@@ -2133,11 +2103,7 @@ found:
 
                        if (invalid && DNS_TRUST_PENDING(rdataset->trust)) {
                                dns_rdataset_disassociate(rdataset);
-                               if (sigrdataset != NULL &&
-                                   dns_rdataset_isassociated(sigrdataset))
-                               {
-                                       dns_rdataset_disassociate(sigrdataset);
-                               }
+                               dns_rdataset_cleanup(sigrdataset);
                        } else if (!query_isduplicate(client, fname,
                                                      dns_rdatatype_aaaa,
                                                      &mname))
@@ -2583,9 +2549,7 @@ validate(ns_client_t *client, dns_db_t *db, dns_name_t *name,
                        }
                        dst_key_free(&key);
                } while (1);
-               if (dns_rdataset_isassociated(&keyrdataset)) {
-                       dns_rdataset_disassociate(&keyrdataset);
-               }
+               dns_rdataset_cleanup(&keyrdataset);
        }
        return false;
 }
@@ -2594,8 +2558,8 @@ static void
 fixrdataset(ns_client_t *client, dns_rdataset_t **rdataset) {
        if (*rdataset == NULL) {
                *rdataset = ns_client_newrdataset(client);
-       } else if (dns_rdataset_isassociated(*rdataset)) {
-               dns_rdataset_disassociate(*rdataset);
+       } else {
+               dns_rdataset_cleanup(*rdataset);
        }
 }
 
@@ -2990,8 +2954,8 @@ rpz_ready(ns_client_t *client, dns_rdataset_t **rdatasetp) {
 
        if (*rdatasetp == NULL) {
                *rdatasetp = ns_client_newrdataset(client);
-       } else if (dns_rdataset_isassociated(*rdatasetp)) {
-               dns_rdataset_disassociate(*rdatasetp);
+       } else {
+               dns_rdataset_cleanup(*rdatasetp);
        }
        return ISC_R_SUCCESS;
 }
@@ -3394,9 +3358,7 @@ rpz_find_p(ns_client_t *client, dns_name_t *self_name, dns_rdatatype_t qtype,
                         * Ask again to get the right DNS_R_DNAME/NXRRSET/...
                         * result if there is neither a CNAME nor target type.
                         */
-                       if (dns_rdataset_isassociated(*rdatasetp)) {
-                               dns_rdataset_disassociate(*rdatasetp);
-                       }
+                       dns_rdataset_cleanup(*rdatasetp);
                        dns_db_detachnode(nodep);
 
                        if (dns_rdatatype_issig(qtype)) {
@@ -3963,11 +3925,7 @@ rpz_rewrite_ns_skip(ns_client_t *client, dns_name_t *nsname,
                rpz_log_fail_helper(client, level, nsname, DNS_RPZ_TYPE_NSIP,
                                    DNS_RPZ_TYPE_NSDNAME, str, result);
        }
-       if (st->r.ns_rdataset != NULL &&
-           dns_rdataset_isassociated(st->r.ns_rdataset))
-       {
-               dns_rdataset_disassociate(st->r.ns_rdataset);
-       }
+       dns_rdataset_cleanup(st->r.ns_rdataset);
 
        st->r.label--;
 }
@@ -4631,9 +4589,7 @@ again:
                    dns_name_issubdomain(&name, dns_db_origin(db)))
                {
                        dns_rdataset_disassociate(rdataset);
-                       if (dns_rdataset_isassociated(sigrdataset)) {
-                               dns_rdataset_disassociate(sigrdataset);
-                       }
+                       dns_rdataset_cleanup(sigrdataset);
                        skip++;
                        dns_name_getlabelsequence(qname, skip, labels - skip,
                                                  &name);
@@ -4689,9 +4645,7 @@ dns64_ttl(dns_db_t *db, dns_dbversion_t *version) {
        ttl = ISC_MIN(rdataset.ttl, soa.minimum);
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
@@ -4842,17 +4796,11 @@ redirect(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
                                qtype, DNS_DBFIND_NOZONECUT, client->inner.now,
                                &node, found, &cm, &ci, &trdataset, NULL);
        if (result == DNS_R_NXRRSET || result == DNS_R_NCACHENXRRSET) {
-               if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
-               }
-               if (dns_rdataset_isassociated(&trdataset)) {
-                       dns_rdataset_disassociate(&trdataset);
-               }
+               dns_rdataset_cleanup(rdataset);
+               dns_rdataset_cleanup(&trdataset);
                goto nxrrset;
        } else if (result != ISC_R_SUCCESS) {
-               if (dns_rdataset_isassociated(&trdataset)) {
-                       dns_rdataset_disassociate(&trdataset);
-               }
+               dns_rdataset_cleanup(&trdataset);
                if (node != NULL) {
                        dns_db_detachnode(&node);
                }
@@ -4862,9 +4810,7 @@ redirect(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
 
        CTRACE(ISC_LOG_DEBUG(3), "redirect: found data: done");
        dns_name_copy(found, name);
-       if (dns_rdataset_isassociated(rdataset)) {
-               dns_rdataset_disassociate(rdataset);
-       }
+       dns_rdataset_cleanup(rdataset);
        if (dns_rdataset_isassociated(&trdataset)) {
                dns_rdataset_clone(&trdataset, rdataset);
                dns_rdataset_disassociate(&trdataset);
@@ -4984,20 +4930,14 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
                                client->inner.now, &node, found, &cm, &ci,
                                &trdataset, NULL);
        if (result == DNS_R_NXRRSET || result == DNS_R_NCACHENXRRSET) {
-               if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
-               }
-               if (dns_rdataset_isassociated(&trdataset)) {
-                       dns_rdataset_disassociate(&trdataset);
-               }
+               dns_rdataset_cleanup(rdataset);
+               dns_rdataset_cleanup(&trdataset);
                goto nxrrset;
        } else if (result == ISC_R_NOTFOUND || result == DNS_R_DELEGATION) {
                /*
                 * Cleanup.
                 */
-               if (dns_rdataset_isassociated(&trdataset)) {
-                       dns_rdataset_disassociate(&trdataset);
-               }
+               dns_rdataset_cleanup(&trdataset);
                if (node != NULL) {
                        dns_db_detachnode(&node);
                }
@@ -5018,9 +4958,7 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
                }
                return ISC_R_NOTFOUND;
        } else if (result != ISC_R_SUCCESS) {
-               if (dns_rdataset_isassociated(&trdataset)) {
-                       dns_rdataset_disassociate(&trdataset);
-               }
+               dns_rdataset_cleanup(&trdataset);
                if (node != NULL) {
                        dns_db_detachnode(&node);
                }
@@ -5042,9 +4980,7 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
        RUNTIME_CHECK(result == ISC_R_SUCCESS);
 
        dns_name_copy(found, name);
-       if (dns_rdataset_isassociated(rdataset)) {
-               dns_rdataset_disassociate(rdataset);
-       }
+       dns_rdataset_cleanup(rdataset);
        if (dns_rdataset_isassociated(&trdataset)) {
                dns_rdataset_clone(&trdataset, rdataset);
                dns_rdataset_disassociate(&trdataset);
@@ -5113,15 +5049,8 @@ qctx_init(ns_client_t *client, dns_fetchresponse_t **frespp,
  */
 static void
 qctx_clean(query_ctx_t *qctx) {
-       if (qctx->rdataset != NULL && dns_rdataset_isassociated(qctx->rdataset))
-       {
-               dns_rdataset_disassociate(qctx->rdataset);
-       }
-       if (qctx->sigrdataset != NULL &&
-           dns_rdataset_isassociated(qctx->sigrdataset))
-       {
-               dns_rdataset_disassociate(qctx->sigrdataset);
-       }
+       dns_rdataset_cleanup(qctx->rdataset);
+       dns_rdataset_cleanup(qctx->sigrdataset);
        if (qctx->db != NULL && qctx->node != NULL) {
                dns_db_detachnode(&qctx->node);
        }
@@ -5929,11 +5858,7 @@ query_lookup(query_ctx_t *qctx) {
         */
        if (qctx->dns64 && qctx->rpz) {
                dns_name_copy(qctx->client->query.qname, qctx->fname);
-               if (qctx->sigrdataset != NULL &&
-                   dns_rdataset_isassociated(qctx->sigrdataset))
-               {
-                       dns_rdataset_disassociate(qctx->sigrdataset);
-               }
+               dns_rdataset_cleanup(qctx->sigrdataset);
        }
 
        if (!qctx->is_zone) {
@@ -7179,10 +7104,7 @@ query_checkrpz(query_ctx_t *qctx, isc_result_t result) {
                                 * the node by iterating later,
                                 * and set the TTL then.
                                 */
-                               if (dns_rdataset_isassociated(qctx->rdataset)) {
-                                       dns_rdataset_disassociate(
-                                               qctx->rdataset);
-                               }
+                               dns_rdataset_cleanup(qctx->rdataset);
                        } else {
                                /*
                                 * We will add this rdataset.
@@ -7636,14 +7558,14 @@ query_addnoqnameproof(query_ctx_t *qctx) {
 
        if (neg == NULL) {
                neg = ns_client_newrdataset(client);
-       } else if (dns_rdataset_isassociated(neg)) {
-               dns_rdataset_disassociate(neg);
+       } else {
+               dns_rdataset_cleanup(neg);
        }
 
        if (negsig == NULL) {
                negsig = ns_client_newrdataset(client);
-       } else if (dns_rdataset_isassociated(negsig)) {
-               dns_rdataset_disassociate(negsig);
+       } else {
+               dns_rdataset_cleanup(negsig);
        }
 
        result = dns_rdataset_getclosest(qctx->noqname, fname, neg, negsig);
@@ -8858,12 +8780,8 @@ addnsec3:
        dbuf = ns_client_getnamebuf(client);
        fname = ns_client_newname(client, dbuf, &b);
        dns_fixedname_init(&fixed);
-       if (dns_rdataset_isassociated(rdataset)) {
-               dns_rdataset_disassociate(rdataset);
-       }
-       if (dns_rdataset_isassociated(sigrdataset)) {
-               dns_rdataset_disassociate(sigrdataset);
-       }
+       dns_rdataset_cleanup(rdataset);
+       dns_rdataset_cleanup(sigrdataset);
        name = dns_fixedname_name(&qctx->dsname);
        query_findclosestnsec3(name, qctx->db, qctx->version, client, rdataset,
                               sigrdataset, fname, true,
@@ -9970,12 +9888,8 @@ query_coveringnsec(query_ctx_t *qctx) {
        done = true;
 
 cleanup:
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
-       if (dns_rdataset_isassociated(&sigrdataset)) {
-               dns_rdataset_disassociate(&sigrdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
+       dns_rdataset_cleanup(&sigrdataset);
        if (soardataset != NULL) {
                ns_client_putrdataset(qctx->client, &soardataset);
        }
@@ -10396,9 +10310,7 @@ query_addcname(query_ctx_t *qctx, dns_trust_t trust, dns_ttl_t ttl) {
 
        query_addrrset(qctx, &aname, &rdataset, NULL, NULL, DNS_SECTION_ANSWER);
        if (rdataset != NULL) {
-               if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
-               }
+               dns_rdataset_cleanup(rdataset);
                dns_message_puttemprdataset(client->message, &rdataset);
        }
        if (aname != NULL) {
@@ -11039,14 +10951,14 @@ again:
 
                if (rdataset == NULL) {
                        rdataset = ns_client_newrdataset(client);
-               } else if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
+               } else {
+                       dns_rdataset_cleanup(rdataset);
                }
 
                if (sigrdataset == NULL) {
                        sigrdataset = ns_client_newrdataset(client);
-               } else if (dns_rdataset_isassociated(sigrdataset)) {
-                       dns_rdataset_disassociate(sigrdataset);
+               } else {
+                       dns_rdataset_cleanup(sigrdataset);
                }
 
                /*
@@ -11090,14 +11002,14 @@ again:
 
                if (rdataset == NULL) {
                        rdataset = ns_client_newrdataset(client);
-               } else if (dns_rdataset_isassociated(rdataset)) {
-                       dns_rdataset_disassociate(rdataset);
+               } else {
+                       dns_rdataset_cleanup(rdataset);
                }
 
                if (sigrdataset == NULL) {
                        sigrdataset = ns_client_newrdataset(client);
-               } else if (dns_rdataset_isassociated(sigrdataset)) {
-                       dns_rdataset_disassociate(sigrdataset);
+               } else {
+                       dns_rdataset_cleanup(sigrdataset);
                }
 
                /*
index d01489beaf7e0a4aeda725cff9e87d70b1b795e9..425169d87254c30db334b1cdb89c255c800d8d4e 100644 (file)
@@ -2224,9 +2224,7 @@ cleanup:
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        return result;
 }
 
index d1faaf555c3d9f9e5300e545fca9f53cd6390f9f..59635d4fcc28f449ec0bf0790c498f23c612f439 100644 (file)
@@ -376,9 +376,7 @@ ISC_LOOP_TEST_IMPL(version) {
                             foundname, &rdataset, NULL);
        assert_int_equal(result, DNS_R_NXDOMAIN);
 
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
        if (node != NULL) {
                dns_db_detachnode(&node);
        }
index 1a50335930ff64642ef110f94c33d3bc893a69a8..a4f57ec6e52db633b9e1bf8035608686cbe57fe9 100644 (file)
@@ -181,9 +181,7 @@ ISC_RUN_TEST_IMPL(find) {
         */
        assert_true(res == DNS_R_NXRRSET || res == DNS_R_NXDOMAIN);
 
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
 
        dns_rdataset_init(&rdataset);
        check_assertion((void)dns_db_find(db1, dns_rootname, v2,
@@ -236,9 +234,7 @@ ISC_RUN_TEST_IMPL(findrdataset) {
                                  &rdataset, NULL);
        assert_int_equal(res, ISC_R_NOTFOUND);
 
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
 
        dns_rdataset_init(&rdataset);
        check_assertion(dns_db_findrdataset(db1, node, v2, dns_rdatatype_soa, 0,
@@ -305,9 +301,7 @@ ISC_RUN_TEST_IMPL(subtract) {
        res = dns_db_subtractrdataset(db1, node, v1, &rdataset, 0, NULL);
        assert_int_equal(res, DNS_R_UNCHANGED);
 
-       if (dns_rdataset_isassociated(&rdataset)) {
-               dns_rdataset_disassociate(&rdataset);
-       }
+       dns_rdataset_cleanup(&rdataset);
 
        dns_rdataset_init(&rdataset);
        dns_rdatalist_tordataset(&rdatalist, &rdataset);