]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/core/manager.c
core/manager: fix conditions to start and stop watching running jobs
[thirdparty/systemd.git] / src / core / manager.c
index 91d773c2f6c9f1589e4adbcfd4c8b14bc4643e4d..1d188081a1d71f5bac416242ec3744c94461e624 100644 (file)
@@ -1144,7 +1144,7 @@ unsigned manager_dispatch_run_queue(Manager *m) {
 
         m->dispatching_run_queue = false;
 
-        if (hashmap_size(m->jobs) > 0)
+        if (m->n_running_jobs > 0)
                 manager_watch_jobs_in_progress(m);
 
         return n;
@@ -2368,10 +2368,11 @@ void manager_check_finished(Manager *m) {
 
         assert(m);
 
-        if (hashmap_size(m->jobs) > 0) {
-                manager_jobs_in_progress_mod_timer(m);
+        if (m->n_running_jobs == 0)
+                manager_unwatch_jobs_in_progress(m);
+
+        if (hashmap_size(m->jobs) > 0)
                 return;
-        }
 
         /* Notify Type=idle units that we are done now */
         close_pipe(m->idle_pipe);
@@ -2379,8 +2380,6 @@ void manager_check_finished(Manager *m) {
         /* Turn off confirm spawn now */
         m->confirm_spawn = false;
 
-        manager_unwatch_jobs_in_progress(m);
-
         if (dual_timestamp_is_set(&m->finish_timestamp))
                 return;