static void
cache_free(dns_cache_t *cache) {
- int i;
-
REQUIRE(VALID_CACHE(cache));
isc_refcount_destroy(&cache->references);
if (strcmp(cache->db_type, "rbt") == 0) {
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) {
- isc_mem_free(cache->mctx,
- cache->db_argv[i]);
+ isc_mem_free(cache->mctx, cache->db_argv[i]);
}
}
isc_mem_put(cache->mctx, cache->db_argv,
dns_qid_t *qid;
REQUIRE(disp->port_table != NULL);
- REQUIRE(portentry != NULL &&
- isc_refcount_current(&portentry->refs) > 0);
+ REQUIRE(portentry != NULL);
if (isc_refcount_decrement(&portentry->refs) == 1) {
qid = DNS_QID(disp);
* dispsock->portentry does not change in socket_search.
*/
*portentryp = NULL;
-
}
/*%
static void
loadctx_destroy(dns_loadctx_t *lctx) {
- isc_result_t result;
-
REQUIRE(DNS_LCTX_VALID(lctx));
+ isc_refcount_destroy(&lctx->references);
+
lctx->magic = 0;
- if (lctx->inc != NULL)
+ if (lctx->inc != NULL) {
incctx_destroy(lctx->mctx, lctx->inc);
+ }
if (lctx->f != NULL) {
- result = isc_stdio_close(lctx->f);
+ isc_result_t result = isc_stdio_close(lctx->f);
if (result != ISC_R_SUCCESS) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_stdio_close() failed: %s",
}
/* 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);
+ }
if (lctx->task != NULL) {
isc_task_detach(&lctx->task);
unsigned int nodes;
/* dns_master_dumpinc() */
char *file;
- char *tmpfile;
+ char *tmpfile;
dns_masterformat_t format;
dns_masterrawheader_t header;
isc_result_t (*dumpsets)(isc_mem_t *mctx,
destroy(dns_sdb_t *sdb) {
dns_sdbimplementation_t *imp = sdb->implementation;
+ isc_refcount_destroy(&sdb->references);
+
if (imp->methods->destroy != NULL) {
MAYBE_LOCK(sdb);
imp->methods->destroy(sdb->zone, imp->driverdata,
dns_db_t *db;
isc_mem_t *mctx;
+ isc_refcount_destroy(&node->references);
+
sdlz = node->sdlz;
mctx = sdlz->common.mctx;
dns_name_free(node->name, mctx);
isc_mem_put(mctx, node->name, sizeof(dns_name_t));
}
- isc_refcount_destroy(&node->references);
node->magic = 0;
isc_mem_put(mctx, node, sizeof(dns_sdlznode_t));
*statsp = NULL;
if (isc_refcount_decrement(&stats->references) == 1) {
+ isc_refcount_destroy(&stats->references);
isc_stats_detach(&stats->counters);
isc_mem_putanddetach(&stats->mctx, stats, sizeof(*stats));
}
static void
destroyring(dns_tsig_keyring_t *ring) {
+ isc_refcount_destroy(&ring->references);
dns_rbt_destroy(&ring->keys);
isc_rwlock_destroy(&ring->lock);
isc_mem_putanddetach(&ring->mctx, ring, sizeof(dns_tsig_keyring_t));
node = NULL;
dns_rbtnodechain_current(&chain, &foundname, origin, &node);
tkey = node->data;
- if (tkey != NULL && tkey->generated && tkey->expire >= now)
+ if (tkey != NULL && tkey->generated && tkey->expire >= now) {
dump_key(tkey, fp);
+ }
result = dns_rbtnodechain_next(&chain, &foundname,
origin);
if (result != ISC_R_SUCCESS && result != DNS_R_NEWORIGIN) {
dns_rbtnodechain_invalidate(&chain);
- if (result == ISC_R_NOMORE)
+ if (result == ISC_R_NOMORE) {
result = ISC_R_SUCCESS;
+ }
goto destroy;
}
}
*statsp = NULL;
if (isc_refcount_decrement(&stats->references) == 1) {
+ isc_refcount_destroy(&stats->references);
isc_mem_put(stats->mctx, stats->counters,
sizeof(isc__atomic_statcounter_t) *
stats->ncounters);
REQUIRE(EMPTY(task->events));
REQUIRE(task->nevents == 0);
REQUIRE(EMPTY(task->on_shutdown));
- REQUIRE(atomic_load(&task->references) == 0);
REQUIRE(task->state == task_state_done);
XTRACE("task_finished");
+ isc_refcount_destroy(&task->references);
+
LOCK(&manager->lock);
UNLINK(manager->tasks, task, link);
atomic_fetch_sub(&manager->tasks_count, 1);
static void
clientmgr_detach(ns_clientmgr_t **mp) {
ns_clientmgr_t *mgr = *mp;
- int32_t oldrefs;
- oldrefs = isc_refcount_decrement(&mgr->references);
- INSIST(oldrefs > 0);
+ int32_t oldrefs = isc_refcount_decrement(&mgr->references);
isc_log_write(ns_lctx, NS_LOGCATEGORY_CLIENT,
NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
MTRACE("clientmgr_destroy");
+ isc_refcount_destroy(&manager->references);
manager->magic = 0;
#if CLIENT_NMCTXS > 0
ns_interfacemgr_destroy(ns_interfacemgr_t *mgr) {
REQUIRE(NS_INTERFACEMGR_VALID(mgr));
+ isc_refcount_destroy(&mgr->references);
+
#ifdef USE_ROUTE_SOCKET
if (mgr->route != NULL)
isc_socket_detach(&mgr->route);
void
ns_lib_shutdown(void) {
if (isc_refcount_decrement(&references) == 1) {
+ isc_refcount_destroy(&references);
if (ns_g_mctx != NULL) {
isc_mem_detach(&ns_g_mctx);
}