From cebc988dd4b8372b84747a132d0e2babaa84e988 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Sun, 11 Oct 2009 08:58:05 +0000 Subject: Switch run-shell over to queue the command in the background like #(). --- server.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'server.c') diff --git a/server.c b/server.c index d19b321d..bf9aba94 100644 --- a/server.c +++ b/server.c @@ -810,13 +810,17 @@ void server_check_jobs(void) { struct job *job; - + +restart: SLIST_FOREACH(job, &all_jobs, lentry) { if (job->flags & JOB_DONE || job->fd != -1 || job->pid != -1) continue; - if (job->callbackfn != NULL) - job->callbackfn(job); job->flags |= JOB_DONE; + + if (job->callbackfn != NULL) { + job->callbackfn(job); + goto restart; /* could be freed by callback */ + } } } -- cgit