void
dns_db_unregister(dns_dbimplementation_t **dbimp) {
dns_dbimplementation_t *imp;
- isc_mem_t *mctx;
REQUIRE(dbimp != NULL && *dbimp != NULL);
*dbimp = NULL;
RWLOCK(&implock, isc_rwlocktype_write);
ISC_LIST_UNLINK(implementations, imp, link);
- mctx = imp->mctx;
- isc_mem_put(mctx, imp, sizeof(dns_dbimplementation_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&imp->mctx, imp, sizeof(dns_dbimplementation_t));
RWUNLOCK(&implock, isc_rwlocktype_write);
ENSURE(*dbimp == NULL);
}
*/
static void
destroy_mgr(dns_dispatchmgr_t **mgrp) {
- isc_mem_t *mctx;
dns_dispatchmgr_t *mgr;
mgr = *mgrp;
*mgrp = NULL;
- mctx = mgr->mctx;
-
mgr->magic = 0;
- mgr->mctx = NULL;
isc_mutex_destroy(&mgr->lock);
mgr->state = 0;
isc_mutex_destroy(&mgr->rpool_lock);
isc_mutex_destroy(&mgr->depool_lock);
- if (mgr->qid != NULL)
- qid_destroy(mctx, &mgr->qid);
+ if (mgr->qid != NULL) {
+ qid_destroy(mgr->mctx, &mgr->qid);
+ }
isc_mutex_destroy(&mgr->buffer_lock);
- if (mgr->blackhole != NULL)
+ if (mgr->blackhole != NULL) {
dns_acl_detach(&mgr->blackhole);
+ }
- if (mgr->stats != NULL)
+ if (mgr->stats != NULL) {
isc_stats_detach(&mgr->stats);
+ }
if (mgr->v4ports != NULL) {
- isc_mem_put(mctx, mgr->v4ports,
+ isc_mem_put(mgr->mctx, mgr->v4ports,
mgr->nv4ports * sizeof(in_port_t));
}
if (mgr->v6ports != NULL) {
- isc_mem_put(mctx, mgr->v6ports,
+ isc_mem_put(mgr->mctx, mgr->v6ports,
mgr->nv6ports * sizeof(in_port_t));
}
- isc_mem_put(mctx, mgr, sizeof(dns_dispatchmgr_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&mgr->mctx, mgr, sizeof(dns_dispatchmgr_t));
}
static isc_result_t
isc_mutex_destroy(&mgr->depool_lock);
isc_mutex_destroy(&mgr->buffer_lock);
isc_mutex_destroy(&mgr->lock);
- isc_mem_put(mctx, mgr, sizeof(dns_dispatchmgr_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&mctx, mgr, sizeof(dns_dispatchmgr_t));
return (result);
}
dispatch_free(dns_dispatch_t **dispp) {
dns_dispatch_t *disp;
dns_dispatchmgr_t *mgr;
- int i;
REQUIRE(VALID_DISPATCH(*dispp));
disp = *dispp;
qid_destroy(mgr->mctx, &disp->qid);
if (disp->port_table != NULL) {
- for (i = 0; i < DNS_DISPATCH_PORTTABLESIZE; i++)
+ for (int i = 0; i < DNS_DISPATCH_PORTTABLESIZE; i++) {
INSIST(ISC_LIST_EMPTY(disp->port_table[i]));
+ }
isc_mem_put(mgr->mctx, disp->port_table,
sizeof(disp->port_table[0]) *
DNS_DISPATCH_PORTTABLESIZE);
void
dns_dlzunregister(dns_dlzimplementation_t **dlzimp) {
dns_dlzimplementation_t *dlz_imp;
- isc_mem_t *mctx;
/* Write debugging message to log */
isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
/* remove the dlz_implementation object from the list */
ISC_LIST_UNLINK(dlz_implementations, dlz_imp, link);
- mctx = dlz_imp->mctx;
/*
* Return the memory back to the available memory pool and
* remove it from the memory context.
*/
- isc_mem_put(mctx, dlz_imp, sizeof(dns_dlzimplementation_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&dlz_imp->mctx, dlz_imp, sizeof(*dlz_imp));
/* Unlock the dlz_implementations list. */
RWUNLOCK(&dlz_implock, isc_rwlocktype_write);
void
dns_fwdtable_destroy(dns_fwdtable_t **fwdtablep) {
dns_fwdtable_t *fwdtable;
- isc_mem_t *mctx;
REQUIRE(fwdtablep != NULL && VALID_FWDTABLE(*fwdtablep));
dns_rbt_destroy(&fwdtable->table);
isc_rwlock_destroy(&fwdtable->rwlock);
fwdtable->magic = 0;
- mctx = fwdtable->mctx;
- isc_mem_put(mctx, fwdtable, sizeof(dns_fwdtable_t));
- isc_mem_detach(&mctx);
+
+ isc_mem_putanddetach(&fwdtable->mctx, fwdtable, sizeof(dns_fwdtable_t));
*fwdtablep = NULL;
}
static void
loadctx_destroy(dns_loadctx_t *lctx) {
- isc_mem_t *mctx;
isc_result_t result;
REQUIRE(DNS_LCTX_VALID(lctx));
if (lctx->lex != NULL && !lctx->keep_lex)
isc_lex_destroy(&lctx->lex);
- if (lctx->task != NULL)
+ if (lctx->task != NULL) {
isc_task_detach(&lctx->task);
- mctx = NULL;
- isc_mem_attach(lctx->mctx, &mctx);
- isc_mem_detach(&lctx->mctx);
- isc_mem_put(mctx, lctx, sizeof(*lctx));
- isc_mem_detach(&mctx);
+ }
+
+ isc_mem_putanddetach(&lctx->mctx, lctx, sizeof(*lctx));
}
static isc_result_t
static void
mgr_destroy(dns_requestmgr_t *requestmgr) {
int i;
- isc_mem_t *mctx;
req_log(ISC_LOG_DEBUG(3), "mgr_destroy");
if (requestmgr->dispatchv6 != NULL)
dns_dispatch_detach(&requestmgr->dispatchv6);
requestmgr->magic = 0;
- mctx = requestmgr->mctx;
- isc_mem_put(mctx, requestmgr, sizeof(*requestmgr));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&requestmgr->mctx, requestmgr, sizeof(*requestmgr));
}
static unsigned int
static void
req_destroy(dns_request_t *request) {
- isc_mem_t *mctx;
-
REQUIRE(VALID_REQUEST(request));
req_log(ISC_LOG_DEBUG(3), "req_destroy: request %p", request);
dns_tsigkey_detach(&request->tsigkey);
if (request->requestmgr != NULL)
requestmgr_detach(&request->requestmgr);
- mctx = request->mctx;
- isc_mem_put(mctx, request, sizeof(*request));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&request->mctx, request, sizeof(*request));
}
/*
void
dns_sdb_unregister(dns_sdbimplementation_t **sdbimp) {
dns_sdbimplementation_t *imp;
- isc_mem_t *mctx;
REQUIRE(sdbimp != NULL && *sdbimp != NULL);
dns_db_unregister(&imp->dbimp);
isc_mutex_destroy(&imp->driverlock);
- mctx = imp->mctx;
- isc_mem_put(mctx, imp, sizeof(dns_sdbimplementation_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&imp->mctx, imp, sizeof(dns_sdbimplementation_t));
*sdbimp = NULL;
}
static void
destroy(dns_sdb_t *sdb) {
- isc_mem_t *mctx;
dns_sdbimplementation_t *imp = sdb->implementation;
- mctx = sdb->common.mctx;
-
if (imp->methods->destroy != NULL) {
MAYBE_LOCK(sdb);
imp->methods->destroy(sdb->zone, imp->driverdata,
MAYBE_UNLOCK(sdb);
}
- isc_mem_free(mctx, sdb->zone);
+ isc_mem_free(sdb->common.mctx, sdb->zone);
sdb->common.magic = 0;
sdb->common.impmagic = 0;
- dns_name_free(&sdb->common.origin, mctx);
+ dns_name_free(&sdb->common.origin, sdb->common.mctx);
- isc_mem_put(mctx, sdb, sizeof(dns_sdb_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&sdb->common.mctx, sdb, sizeof(dns_sdb_t));
}
static void
createiterator(dns_db_t *db, unsigned int options, dns_dbiterator_t **iteratorp)
{
dns_sdb_t *sdb = (dns_sdb_t *)db;
+ REQUIRE(VALID_SDB(sdb));
+
sdb_dbiterator_t *sdbiter;
- dns_sdbimplementation_t *imp = sdb->implementation;
isc_result_t result;
-
- REQUIRE(VALID_SDB(sdb));
+ dns_sdbimplementation_t *imp = sdb->implementation;
if (imp->methods->allnodes == NULL)
return (ISC_R_NOTIMPLEMENTED);
isc_stdtime_t now, dns_rdataset_t *rdataset,
dns_rdataset_t *sigrdataset)
{
+ REQUIRE(VALID_SDBNODE(node));
+
dns_rdatalist_t *list;
dns_sdbnode_t *sdbnode = (dns_sdbnode_t *)node;
- REQUIRE(VALID_SDBNODE(node));
UNUSED(db);
UNUSED(version);
cleanup_origin:
dns_name_free(&sdb->common.origin, mctx);
cleanup_lock:
- isc_mem_put(mctx, sdb, sizeof(dns_sdb_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&mctx, sdb, sizeof(dns_sdb_t));
return (result);
}
isc_stdtime_t now, dns_rdataset_t *rdataset,
dns_rdataset_t *sigrdataset)
{
+ REQUIRE(VALID_SDLZNODE(node));
dns_rdatalist_t *list;
dns_sdlznode_t *sdlznode = (dns_sdlznode_t *)node;
- REQUIRE(VALID_SDLZNODE(node));
UNUSED(db);
UNUSED(version);
* return the memory back to the available memory pool and
* remove it from the memory context.
*/
- isc_mem_put(mctx, imp, sizeof(dns_sdlzimplementation_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&imp->mctx, imp, sizeof(dns_sdlzimplementation_t));
return (result);
}
void
dns_sdlzunregister(dns_sdlzimplementation_t **sdlzimp) {
dns_sdlzimplementation_t *imp;
- isc_mem_t *mctx;
/* Write debugging message to log */
sdlz_log(ISC_LOG_DEBUG(2), "Unregistering SDLZ driver.");
/* destroy the driver lock, we don't need it anymore */
isc_mutex_destroy(&imp->driverlock);
- mctx = imp->mctx;
-
/*
* return the memory back to the available memory pool and
* remove it from the memory context.
*/
- isc_mem_put(mctx, imp, sizeof(dns_sdlzimplementation_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&imp->mctx, imp, sizeof(dns_sdlzimplementation_t));
*sdlzimp = NULL;
}
}
if (tctx->gsscred != NULL)
dst_gssapi_releasecred(&tctx->gsscred);
- isc_mem_put(mctx, tctx, sizeof(dns_tkeyctx_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&mctx, tctx, sizeof(dns_tkeyctx_t));
*tctxp = NULL;
}
*/
static void
zone_free(dns_zone_t *zone) {
- isc_mem_t *mctx = NULL;
dns_signing_t *signing;
dns_nsec3chain_t *nsec3chain;
isc_event_t *setnsec3param_event;
ZONEDB_DESTROYLOCK(&zone->dblock);
isc_mutex_destroy(&zone->lock);
zone->magic = 0;
- mctx = zone->mctx;
- isc_mem_put(mctx, zone, sizeof(*zone));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&zone->mctx, zone, sizeof(*zone));
}
/*
}
dns_name_free(keyname, mctx);
- isc_mem_put(mctx, kfetch, sizeof(dns_keyfetch_t));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&mctx, kfetch, sizeof(dns_keyfetch_t));
if (secroots != NULL) {
dns_keytable_detach(&secroots);
void
isc_timermgr_destroy(isc_timermgr_t **managerp) {
isc__timermgr_t *manager;
- isc_mem_t *mctx;
/*
* Destroy a timer manager.
isc_heap_destroy(&manager->heap);
manager->common.impmagic = 0;
manager->common.magic = 0;
- mctx = manager->mctx;
- isc_mem_put(mctx, manager, sizeof(*manager));
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&manager->mctx, manager, sizeof(*manager));
*managerp = NULL;
void
isc_socketmgr_destroy(isc_socketmgr_t **managerp) {
isc__socketmgr_t *manager;
- isc_mem_t *mctx;
- int i;
/*
* Destroy a socket manager.
* half of the pipe, which will send EOF to the read half.
* This is currently a no-op in the non-threaded case.
*/
- for (i = 0; i < manager->nthreads; i++) {
+ for (int i = 0; i < manager->nthreads; i++) {
select_poke(manager, i, 0, SELECT_POKE_SHUTDOWN);
}
/*
* Wait for thread to exit.
*/
- for (i = 0; i < manager->nthreads; i++) {
+ for (int i = 0; i < manager->nthreads; i++) {
isc_result_t result;
result = isc_thread_join(manager->threads[i].thread, NULL);
if (result != ISC_R_SUCCESS) {
isc_mutex_destroy(&manager->lock);
manager->common.magic = 0;
manager->common.impmagic = 0;
- mctx= manager->mctx;
- isc_mem_put(mctx, manager, sizeof(*manager));
-
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&manager->mctx, manager, sizeof(*manager));
*managerp = NULL;
void
isc_socketmgr_destroy(isc_socketmgr_t **managerp) {
isc_socketmgr_t *manager;
- int i;
- isc_mem_t *mctx;
/*
* Destroy a socket manager.
/*
* Wait for threads to exit.
*/
- for (i = 0; i < manager->maxIOCPThreads; i++) {
+ for (int i = 0; i < manager->maxIOCPThreads; i++) {
if (isc_thread_join((isc_thread_t) manager->hIOCPThreads[i],
NULL) != ISC_R_SUCCESS)
UNEXPECTED_ERROR(__FILE__, __LINE__,
(void)isc_condition_destroy(&manager->shutdown_ok);
isc_mutex_destroy(&manager->lock);
- if (manager->stats != NULL)
+ if (manager->stats != NULL) {
isc_stats_detach(&manager->stats);
+ }
manager->magic = 0;
- mctx= manager->mctx;
- isc_mem_put(mctx, manager, sizeof(*manager));
-
- isc_mem_detach(&mctx);
+ isc_mem_putanddetach(&manager->mctx, manager, sizeof(*manager));
*managerp = NULL;
}