From c266a1e8609eb84e05acbd63b230777a4aa35977 Mon Sep 17 00:00:00 2001
From: dimitri staessens <dimitri.staessens@intec.ugent.be>
Date: Tue, 23 Aug 2016 13:23:41 +0200
Subject: irmd: Fix reaping child processes

---
 src/irmd/main.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/irmd/main.c b/src/irmd/main.c
index c33ba3e6..5366b535 100644
--- a/src/irmd/main.c
+++ b/src/irmd/main.c
@@ -1286,15 +1286,16 @@ static pid_t auto_execute(char ** argv)
                 return -1;
         }
 
-        LOG_INFO("Executing %s.", argv[0]);
         api = fork();
         if (api == -1) {
                 LOG_ERR("Failed to fork");
                 return api;
         }
 
-        if (api != 0)
+        if (api != 0) {
+                LOG_INFO("Instantiated %s as AP-i %d.", argv[0], api);
                 return api;
+        }
 
         execv(argv[0], argv);
 
@@ -1653,9 +1654,9 @@ void * irm_sanitize()
 
                 list_for_each_safe(p, h, &irmd->spawned_apis) {
                         struct pid_el * e = list_entry(p, struct pid_el, next);
+                        waitpid(e->pid, &s, WNOHANG);
                         if (kill(e->pid, 0) >= 0)
                                 continue;
-                        waitpid(e->pid, &s, WNOHANG);
                         LOG_DBG("Child process %d died, error %d.", e->pid, s);
                         list_del(&e->next);
                         free(e);
-- 
cgit v1.2.3