aboutsummaryrefslogtreecommitdiff
path: root/initd/supervisor.c
diff options
context:
space:
mode:
Diffstat (limited to 'initd/supervisor.c')
-rw-r--r--initd/supervisor.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/initd/supervisor.c b/initd/supervisor.c
index c1b44e7..d54b9ca 100644
--- a/initd/supervisor.c
+++ b/initd/supervisor.c
@@ -185,7 +185,7 @@ static pid_t wait_for_process(int *status)
return pid;
}
-bool supervisor_process_queues(void)
+void supervisor_process_queues(void)
{
svc_run_data_t *rt;
service_t *svc;
@@ -194,8 +194,12 @@ bool supervisor_process_queues(void)
pid_t pid;
count = queue_count[target];
- if (queue_idx >= count)
- return false;
+
+ if (queue_idx >= count) {
+ pid = wait_for_process(&status);
+ supervisor_handle_exited(pid, status);
+ return;
+ }
rt = rt_data + queue_start[target] + queue_idx++;
svc = rt->svc;
@@ -235,5 +239,4 @@ bool supervisor_process_queues(void)
}
check_target_completion();
- return true;
}