When first dns_db_addrdataset() succeeds in cache_rrset(), but the
second one fails with error, the added rdataset was kept associated.
This caused assertion failure down the pipe in fctx_sendevents().
if (result == ISC_R_SUCCESS && sigrdataset != NULL) {
result = dns_db_addrdataset(fctx->cache, node, NULL, now,
sigrdataset, options, addedsig);
+ if (result != ISC_R_SUCCESS && result != DNS_R_UNCHANGED) {
+ dns__rdataset_disassociate(added);
+ }
}
if (result == DNS_R_UNCHANGED) {