]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Additional fixes to non-thread version
authorPetr Menšík <pemensik@redhat.com>
Mon, 26 Feb 2024 20:08:42 +0000 (21:08 +0100)
committerPetr Menšík <pemensik@redhat.com>
Wed, 28 Feb 2024 13:13:46 +0000 (14:13 +0100)
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.

lib/isc/task.c

index 38638850638da105d9560d05cc036b12bc98ec7a..5315b5177c5839bc63cf9ba2373cd25179d01d88 100644 (file)
@@ -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);
 }