mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-03 16:15:27 +00:00
Add isc_refcount_destroy() as appropriate
This commit is contained in:
@@ -314,8 +314,6 @@ cleanup_filelock:
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
cache_free(dns_cache_t *cache) {
|
cache_free(dns_cache_t *cache) {
|
||||||
int i;
|
|
||||||
|
|
||||||
REQUIRE(VALID_CACHE(cache));
|
REQUIRE(VALID_CACHE(cache));
|
||||||
|
|
||||||
isc_refcount_destroy(&cache->references);
|
isc_refcount_destroy(&cache->references);
|
||||||
@@ -359,10 +357,9 @@ cache_free(dns_cache_t *cache) {
|
|||||||
if (strcmp(cache->db_type, "rbt") == 0) {
|
if (strcmp(cache->db_type, "rbt") == 0) {
|
||||||
extra = 1;
|
extra = 1;
|
||||||
}
|
}
|
||||||
for (i = extra; i < cache->db_argc; i++) {
|
for (int i = extra; i < cache->db_argc; i++) {
|
||||||
if (cache->db_argv[i] != NULL) {
|
if (cache->db_argv[i] != NULL) {
|
||||||
isc_mem_free(cache->mctx,
|
isc_mem_free(cache->mctx, cache->db_argv[i]);
|
||||||
cache->db_argv[i]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isc_mem_put(cache->mctx, cache->db_argv,
|
isc_mem_put(cache->mctx, cache->db_argv,
|
||||||
|
@@ -598,8 +598,7 @@ deref_portentry(dns_dispatch_t *disp, dispportentry_t **portentryp) {
|
|||||||
dns_qid_t *qid;
|
dns_qid_t *qid;
|
||||||
|
|
||||||
REQUIRE(disp->port_table != NULL);
|
REQUIRE(disp->port_table != NULL);
|
||||||
REQUIRE(portentry != NULL &&
|
REQUIRE(portentry != NULL);
|
||||||
isc_refcount_current(&portentry->refs) > 0);
|
|
||||||
|
|
||||||
if (isc_refcount_decrement(&portentry->refs) == 1) {
|
if (isc_refcount_decrement(&portentry->refs) == 1) {
|
||||||
qid = DNS_QID(disp);
|
qid = DNS_QID(disp);
|
||||||
@@ -617,7 +616,6 @@ deref_portentry(dns_dispatch_t *disp, dispportentry_t **portentryp) {
|
|||||||
* dispsock->portentry does not change in socket_search.
|
* dispsock->portentry does not change in socket_search.
|
||||||
*/
|
*/
|
||||||
*portentryp = NULL;
|
*portentryp = NULL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
|
@@ -431,16 +431,17 @@ incctx_destroy(isc_mem_t *mctx, dns_incctx_t *ictx) {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
loadctx_destroy(dns_loadctx_t *lctx) {
|
loadctx_destroy(dns_loadctx_t *lctx) {
|
||||||
isc_result_t result;
|
|
||||||
|
|
||||||
REQUIRE(DNS_LCTX_VALID(lctx));
|
REQUIRE(DNS_LCTX_VALID(lctx));
|
||||||
|
|
||||||
|
isc_refcount_destroy(&lctx->references);
|
||||||
|
|
||||||
lctx->magic = 0;
|
lctx->magic = 0;
|
||||||
if (lctx->inc != NULL)
|
if (lctx->inc != NULL) {
|
||||||
incctx_destroy(lctx->mctx, lctx->inc);
|
incctx_destroy(lctx->mctx, lctx->inc);
|
||||||
|
}
|
||||||
|
|
||||||
if (lctx->f != NULL) {
|
if (lctx->f != NULL) {
|
||||||
result = isc_stdio_close(lctx->f);
|
isc_result_t result = isc_stdio_close(lctx->f);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
||||||
"isc_stdio_close() failed: %s",
|
"isc_stdio_close() failed: %s",
|
||||||
@@ -449,8 +450,9 @@ loadctx_destroy(dns_loadctx_t *lctx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* isc_lex_destroy() will close all open streams */
|
/* isc_lex_destroy() will close all open streams */
|
||||||
if (lctx->lex != NULL && !lctx->keep_lex)
|
if (lctx->lex != NULL && !lctx->keep_lex) {
|
||||||
isc_lex_destroy(&lctx->lex);
|
isc_lex_destroy(&lctx->lex);
|
||||||
|
}
|
||||||
|
|
||||||
if (lctx->task != NULL) {
|
if (lctx->task != NULL) {
|
||||||
isc_task_detach(&lctx->task);
|
isc_task_detach(&lctx->task);
|
||||||
|
@@ -234,7 +234,7 @@ struct dns_dumpctx {
|
|||||||
unsigned int nodes;
|
unsigned int nodes;
|
||||||
/* dns_master_dumpinc() */
|
/* dns_master_dumpinc() */
|
||||||
char *file;
|
char *file;
|
||||||
char *tmpfile;
|
char *tmpfile;
|
||||||
dns_masterformat_t format;
|
dns_masterformat_t format;
|
||||||
dns_masterrawheader_t header;
|
dns_masterrawheader_t header;
|
||||||
isc_result_t (*dumpsets)(isc_mem_t *mctx,
|
isc_result_t (*dumpsets)(isc_mem_t *mctx,
|
||||||
|
@@ -517,6 +517,8 @@ static void
|
|||||||
destroy(dns_sdb_t *sdb) {
|
destroy(dns_sdb_t *sdb) {
|
||||||
dns_sdbimplementation_t *imp = sdb->implementation;
|
dns_sdbimplementation_t *imp = sdb->implementation;
|
||||||
|
|
||||||
|
isc_refcount_destroy(&sdb->references);
|
||||||
|
|
||||||
if (imp->methods->destroy != NULL) {
|
if (imp->methods->destroy != NULL) {
|
||||||
MAYBE_LOCK(sdb);
|
MAYBE_LOCK(sdb);
|
||||||
imp->methods->destroy(sdb->zone, imp->driverdata,
|
imp->methods->destroy(sdb->zone, imp->driverdata,
|
||||||
|
@@ -480,6 +480,8 @@ destroynode(dns_sdlznode_t *node) {
|
|||||||
dns_db_t *db;
|
dns_db_t *db;
|
||||||
isc_mem_t *mctx;
|
isc_mem_t *mctx;
|
||||||
|
|
||||||
|
isc_refcount_destroy(&node->references);
|
||||||
|
|
||||||
sdlz = node->sdlz;
|
sdlz = node->sdlz;
|
||||||
mctx = sdlz->common.mctx;
|
mctx = sdlz->common.mctx;
|
||||||
|
|
||||||
@@ -504,7 +506,6 @@ destroynode(dns_sdlznode_t *node) {
|
|||||||
dns_name_free(node->name, mctx);
|
dns_name_free(node->name, mctx);
|
||||||
isc_mem_put(mctx, node->name, sizeof(dns_name_t));
|
isc_mem_put(mctx, node->name, sizeof(dns_name_t));
|
||||||
}
|
}
|
||||||
isc_refcount_destroy(&node->references);
|
|
||||||
|
|
||||||
node->magic = 0;
|
node->magic = 0;
|
||||||
isc_mem_put(mctx, node, sizeof(dns_sdlznode_t));
|
isc_mem_put(mctx, node, sizeof(dns_sdlznode_t));
|
||||||
|
@@ -125,6 +125,7 @@ dns_stats_detach(dns_stats_t **statsp) {
|
|||||||
*statsp = NULL;
|
*statsp = NULL;
|
||||||
|
|
||||||
if (isc_refcount_decrement(&stats->references) == 1) {
|
if (isc_refcount_decrement(&stats->references) == 1) {
|
||||||
|
isc_refcount_destroy(&stats->references);
|
||||||
isc_stats_detach(&stats->counters);
|
isc_stats_detach(&stats->counters);
|
||||||
isc_mem_putanddetach(&stats->mctx, stats, sizeof(*stats));
|
isc_mem_putanddetach(&stats->mctx, stats, sizeof(*stats));
|
||||||
}
|
}
|
||||||
|
@@ -431,6 +431,7 @@ cleanup_ring(dns_tsig_keyring_t *ring)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
destroyring(dns_tsig_keyring_t *ring) {
|
destroyring(dns_tsig_keyring_t *ring) {
|
||||||
|
isc_refcount_destroy(&ring->references);
|
||||||
dns_rbt_destroy(&ring->keys);
|
dns_rbt_destroy(&ring->keys);
|
||||||
isc_rwlock_destroy(&ring->lock);
|
isc_rwlock_destroy(&ring->lock);
|
||||||
isc_mem_putanddetach(&ring->mctx, ring, sizeof(dns_tsig_keyring_t));
|
isc_mem_putanddetach(&ring->mctx, ring, sizeof(dns_tsig_keyring_t));
|
||||||
@@ -614,14 +615,16 @@ dns_tsigkeyring_dumpanddetach(dns_tsig_keyring_t **ringp, FILE *fp) {
|
|||||||
node = NULL;
|
node = NULL;
|
||||||
dns_rbtnodechain_current(&chain, &foundname, origin, &node);
|
dns_rbtnodechain_current(&chain, &foundname, origin, &node);
|
||||||
tkey = node->data;
|
tkey = node->data;
|
||||||
if (tkey != NULL && tkey->generated && tkey->expire >= now)
|
if (tkey != NULL && tkey->generated && tkey->expire >= now) {
|
||||||
dump_key(tkey, fp);
|
dump_key(tkey, fp);
|
||||||
|
}
|
||||||
result = dns_rbtnodechain_next(&chain, &foundname,
|
result = dns_rbtnodechain_next(&chain, &foundname,
|
||||||
origin);
|
origin);
|
||||||
if (result != ISC_R_SUCCESS && result != DNS_R_NEWORIGIN) {
|
if (result != ISC_R_SUCCESS && result != DNS_R_NEWORIGIN) {
|
||||||
dns_rbtnodechain_invalidate(&chain);
|
dns_rbtnodechain_invalidate(&chain);
|
||||||
if (result == ISC_R_NOMORE)
|
if (result == ISC_R_NOMORE) {
|
||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
|
}
|
||||||
goto destroy;
|
goto destroy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -82,6 +82,7 @@ isc_stats_detach(isc_stats_t **statsp) {
|
|||||||
*statsp = NULL;
|
*statsp = NULL;
|
||||||
|
|
||||||
if (isc_refcount_decrement(&stats->references) == 1) {
|
if (isc_refcount_decrement(&stats->references) == 1) {
|
||||||
|
isc_refcount_destroy(&stats->references);
|
||||||
isc_mem_put(stats->mctx, stats->counters,
|
isc_mem_put(stats->mctx, stats->counters,
|
||||||
sizeof(isc__atomic_statcounter_t) *
|
sizeof(isc__atomic_statcounter_t) *
|
||||||
stats->ncounters);
|
stats->ncounters);
|
||||||
|
@@ -238,11 +238,12 @@ task_finished(isc__task_t *task) {
|
|||||||
REQUIRE(EMPTY(task->events));
|
REQUIRE(EMPTY(task->events));
|
||||||
REQUIRE(task->nevents == 0);
|
REQUIRE(task->nevents == 0);
|
||||||
REQUIRE(EMPTY(task->on_shutdown));
|
REQUIRE(EMPTY(task->on_shutdown));
|
||||||
REQUIRE(atomic_load(&task->references) == 0);
|
|
||||||
REQUIRE(task->state == task_state_done);
|
REQUIRE(task->state == task_state_done);
|
||||||
|
|
||||||
XTRACE("task_finished");
|
XTRACE("task_finished");
|
||||||
|
|
||||||
|
isc_refcount_destroy(&task->references);
|
||||||
|
|
||||||
LOCK(&manager->lock);
|
LOCK(&manager->lock);
|
||||||
UNLINK(manager->tasks, task, link);
|
UNLINK(manager->tasks, task, link);
|
||||||
atomic_fetch_sub(&manager->tasks_count, 1);
|
atomic_fetch_sub(&manager->tasks_count, 1);
|
||||||
|
@@ -2358,9 +2358,7 @@ clientmgr_attach(ns_clientmgr_t *source, ns_clientmgr_t **targetp) {
|
|||||||
static void
|
static void
|
||||||
clientmgr_detach(ns_clientmgr_t **mp) {
|
clientmgr_detach(ns_clientmgr_t **mp) {
|
||||||
ns_clientmgr_t *mgr = *mp;
|
ns_clientmgr_t *mgr = *mp;
|
||||||
int32_t oldrefs;
|
int32_t oldrefs = isc_refcount_decrement(&mgr->references);
|
||||||
oldrefs = isc_refcount_decrement(&mgr->references);
|
|
||||||
INSIST(oldrefs > 0);
|
|
||||||
|
|
||||||
isc_log_write(ns_lctx, NS_LOGCATEGORY_CLIENT,
|
isc_log_write(ns_lctx, NS_LOGCATEGORY_CLIENT,
|
||||||
NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
|
NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
|
||||||
@@ -2380,6 +2378,7 @@ clientmgr_destroy(ns_clientmgr_t *manager) {
|
|||||||
|
|
||||||
MTRACE("clientmgr_destroy");
|
MTRACE("clientmgr_destroy");
|
||||||
|
|
||||||
|
isc_refcount_destroy(&manager->references);
|
||||||
manager->magic = 0;
|
manager->magic = 0;
|
||||||
|
|
||||||
#if CLIENT_NMCTXS > 0
|
#if CLIENT_NMCTXS > 0
|
||||||
|
@@ -300,6 +300,8 @@ static void
|
|||||||
ns_interfacemgr_destroy(ns_interfacemgr_t *mgr) {
|
ns_interfacemgr_destroy(ns_interfacemgr_t *mgr) {
|
||||||
REQUIRE(NS_INTERFACEMGR_VALID(mgr));
|
REQUIRE(NS_INTERFACEMGR_VALID(mgr));
|
||||||
|
|
||||||
|
isc_refcount_destroy(&mgr->references);
|
||||||
|
|
||||||
#ifdef USE_ROUTE_SOCKET
|
#ifdef USE_ROUTE_SOCKET
|
||||||
if (mgr->route != NULL)
|
if (mgr->route != NULL)
|
||||||
isc_socket_detach(&mgr->route);
|
isc_socket_detach(&mgr->route);
|
||||||
|
@@ -76,6 +76,7 @@ ns_lib_init(void) {
|
|||||||
void
|
void
|
||||||
ns_lib_shutdown(void) {
|
ns_lib_shutdown(void) {
|
||||||
if (isc_refcount_decrement(&references) == 1) {
|
if (isc_refcount_decrement(&references) == 1) {
|
||||||
|
isc_refcount_destroy(&references);
|
||||||
if (ns_g_mctx != NULL) {
|
if (ns_g_mctx != NULL) {
|
||||||
isc_mem_detach(&ns_g_mctx);
|
isc_mem_detach(&ns_g_mctx);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user