mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-01 06:55:30 +00:00
Add missing isc_mutex_destroy and isc_conditional_destroy calls.
While harmless on Linux, missing isc_{mutex,conditional}_destroy causes a memory leak on *BSD. Missing calls were added.
This commit is contained in:
committed by
Ondřej Surý
parent
146748f5c6
commit
a8807d9a7b
@@ -10086,6 +10086,7 @@ named_server_destroy(named_server_t **serverp) {
|
|||||||
dst_lib_destroy();
|
dst_lib_destroy();
|
||||||
|
|
||||||
isc_event_free(&server->reload_event);
|
isc_event_free(&server->reload_event);
|
||||||
|
isc_mutex_destroy(&server->reload_event_lock);
|
||||||
|
|
||||||
INSIST(ISC_LIST_EMPTY(server->kasplist));
|
INSIST(ISC_LIST_EMPTY(server->kasplist));
|
||||||
INSIST(ISC_LIST_EMPTY(server->viewlist));
|
INSIST(ISC_LIST_EMPTY(server->viewlist));
|
||||||
|
@@ -276,6 +276,9 @@ nm_destroy(isc_nm_t **mgr0) {
|
|||||||
|
|
||||||
isc_queue_destroy(worker->ievents);
|
isc_queue_destroy(worker->ievents);
|
||||||
isc_queue_destroy(worker->ievents_prio);
|
isc_queue_destroy(worker->ievents_prio);
|
||||||
|
isc_mutex_destroy(&worker->lock);
|
||||||
|
isc_condition_destroy(&worker->cond);
|
||||||
|
|
||||||
isc_mem_put(mgr->mctx, worker->recvbuf,
|
isc_mem_put(mgr->mctx, worker->recvbuf,
|
||||||
ISC_NETMGR_RECVBUF_SIZE);
|
ISC_NETMGR_RECVBUF_SIZE);
|
||||||
isc_thread_join(worker->thread, NULL);
|
isc_thread_join(worker->thread, NULL);
|
||||||
@@ -771,6 +774,8 @@ nmsocket_cleanup(isc_nmsocket_t *sock, bool dofree) {
|
|||||||
|
|
||||||
isc_mem_free(sock->mgr->mctx, sock->ah_frees);
|
isc_mem_free(sock->mgr->mctx, sock->ah_frees);
|
||||||
isc_mem_free(sock->mgr->mctx, sock->ah_handles);
|
isc_mem_free(sock->mgr->mctx, sock->ah_handles);
|
||||||
|
isc_mutex_destroy(&sock->lock);
|
||||||
|
isc_condition_destroy(&sock->cond);
|
||||||
|
|
||||||
if (dofree) {
|
if (dofree) {
|
||||||
isc_nm_t *mgr = sock->mgr;
|
isc_nm_t *mgr = sock->mgr;
|
||||||
|
@@ -1356,9 +1356,12 @@ static void
|
|||||||
manager_free(isc__taskmgr_t *manager) {
|
manager_free(isc__taskmgr_t *manager) {
|
||||||
for (unsigned int i = 0; i < manager->workers; i++) {
|
for (unsigned int i = 0; i < manager->workers; i++) {
|
||||||
isc_mutex_destroy(&manager->queues[i].lock);
|
isc_mutex_destroy(&manager->queues[i].lock);
|
||||||
|
isc_condition_destroy(&manager->queues[i].work_available);
|
||||||
}
|
}
|
||||||
isc_mutex_destroy(&manager->lock);
|
isc_mutex_destroy(&manager->lock);
|
||||||
|
isc_mutex_destroy(&manager->excl_lock);
|
||||||
isc_mutex_destroy(&manager->halt_lock);
|
isc_mutex_destroy(&manager->halt_lock);
|
||||||
|
isc_condition_destroy(&manager->halt_cond);
|
||||||
isc_mem_put(manager->mctx, manager->queues,
|
isc_mem_put(manager->mctx, manager->queues,
|
||||||
manager->workers * sizeof(isc__taskqueue_t));
|
manager->workers * sizeof(isc__taskqueue_t));
|
||||||
manager->common.impmagic = 0;
|
manager->common.impmagic = 0;
|
||||||
|
Reference in New Issue
Block a user