diff --git a/lib/dns/adb.c b/lib/dns/adb.c index cb9539a778..95ca2d4070 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -2055,6 +2055,7 @@ destroy(dns_adb_t *adb) { dns_adbnamebucket_t *nbucket = NULL; isc_ht_iter_current(it, (void **)&nbucket); cleanup_names(nbucket, INT_MAX); + isc_mutex_destroy(&nbucket->lock); isc_mem_put(adb->mctx, nbucket, sizeof(*nbucket)); } isc_ht_iter_destroy(&it); @@ -2070,6 +2071,7 @@ destroy(dns_adb_t *adb) { dns_adbentrybucket_t *ebucket = NULL; isc_ht_iter_current(it, (void **)&ebucket); cleanup_entries(ebucket, INT_MAX); + isc_mutex_destroy(&ebucket->lock); isc_mem_put(adb->mctx, ebucket, sizeof(*ebucket)); } isc_ht_iter_destroy(&it); diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index cd8ccd5f83..f6e976d37f 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -10094,6 +10094,7 @@ destroy(dns_resolver_t *res) { } isc_ht_iter_destroy(&it); isc_ht_destroy(&res->buckets); + isc_rwlock_destroy(&res->hash_lock); isc_ht_iter_create(res->zonebuckets, &it); for (result = isc_ht_iter_first(it); result == ISC_R_SUCCESS; @@ -10109,10 +10110,12 @@ destroy(dns_resolver_t *res) { ISC_LIST_UNLINK(bucket->list, fc, link); isc_mem_put(res->mctx, fc, sizeof(*fc)); } + isc_mutex_destroy(&bucket->lock); isc_mem_put(res->mctx, bucket, sizeof(*bucket)); } isc_ht_iter_destroy(&it); isc_ht_destroy(&res->zonebuckets); + isc_rwlock_destroy(&res->zonehash_lock); if (res->dispatches4 != NULL) { dns_dispatchset_destroy(&res->dispatches4);