Properly free up enqueued netievents in nm_destroy()

When the isc_netmgr is being destroyed, the normal and priority queues
should be dequeued and netievents properly freed.  This wasn't the case.
This commit is contained in:
Ondřej Surý
2022-02-23 22:04:05 +01:00
parent e42d5d8875
commit 88418c3372

View File

@@ -372,14 +372,14 @@ nm_destroy(isc_nm_t **mgr0) {
/* Empty the async event queues */
while ((ievent = DEQUEUE_PRIORITY_NETIEVENT(worker)) != NULL) {
isc_mem_put(mgr->mctx, ievent, sizeof(*ievent));
isc__nm_put_netievent(mgr, ievent);
}
INSIST(DEQUEUE_PRIVILEGED_NETIEVENT(worker) == NULL);
INSIST(DEQUEUE_TASK_NETIEVENT(worker) == NULL);
while ((ievent = DEQUEUE_PRIORITY_NETIEVENT(worker)) != NULL) {
isc_mem_put(mgr->mctx, ievent, sizeof(*ievent));
while ((ievent = DEQUEUE_NORMAL_NETIEVENT(worker)) != NULL) {
isc__nm_put_netievent(mgr, ievent);
}
isc_condition_destroy(&worker->cond_prio);
isc_mutex_destroy(&worker->lock);