From: Petr Menšík Date: Mon, 26 Feb 2024 20:08:42 +0000 (+0100) Subject: Additional fixes to non-thread version X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53fcfb8b8f2a1f57e1ffd5b3b372838066d98323;p=thirdparty%2Fbind9.git Additional fixes to non-thread version Correct some errors in previous non-threaded changes. With these changes unit tests in non-threaded versions pass again. Related to [GL #4424] and [GL #4459], fixup of !8786. --- diff --git a/lib/isc/task.c b/lib/isc/task.c index 38638850638..5315b5177c5 100644 --- a/lib/isc/task.c +++ b/lib/isc/task.c @@ -1318,11 +1318,11 @@ dispatch(isc__taskmgr_t *manager, isc_taskqueue_t qid) { } #ifndef USE_WORKER_THREADS - ISC_LIST_APPENDLIST(manager->ready_tasks[isc_taskqueue_normal], new_ready_tasks, ready_link); - ISC_LIST_APPENDLIST(manager->ready_priority_tasks[isc_taskqueue_normal], new_priority_tasks, + ISC_LIST_APPENDLIST(manager->ready_tasks[qid], new_ready_tasks, ready_link); + ISC_LIST_APPENDLIST(manager->ready_priority_tasks[qid], new_priority_tasks, ready_priority_link); manager->tasks_ready += tasks_ready; - if (empty_readyq(manager, isc_taskqueue_normal)) + if (empty_readyq(manager, qid)) manager->mode = isc_taskmgrmode_normal; #endif @@ -1713,7 +1713,8 @@ isc__taskmgr_ready(isc_taskmgr_t *manager0) { return (false); LOCK(&manager->lock); - is_ready = !empty_readyq(manager, isc_taskqueue_normal); + is_ready = !empty_readyq(manager, isc_taskqueue_normal) || + !empty_readyq(manager, isc_taskqueue_slow); UNLOCK(&manager->lock); return (is_ready); @@ -1731,6 +1732,7 @@ isc__taskmgr_dispatch(isc_taskmgr_t *manager0) { return (ISC_R_NOTFOUND); dispatch(manager, isc_taskqueue_normal); + dispatch(manager, isc_taskqueue_slow); return (ISC_R_SUCCESS); }