From fa842b6dae3eeda6067a3cb5c774d311e4f1b3fc Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 29 Mar 2016 19:29:30 +0100 Subject: [PATCH] cgi-fcgi-interp: new garbage collection approach, compiles --- cprogs/cgi-fcgi-interp.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/cprogs/cgi-fcgi-interp.c b/cprogs/cgi-fcgi-interp.c index 99997d0..f59640f 100644 --- a/cprogs/cgi-fcgi-interp.c +++ b/cprogs/cgi-fcgi-interp.c @@ -140,6 +140,7 @@ #include #include #include +#include #include @@ -591,8 +592,20 @@ static void child_handler(int dummy) { status, (unsigned long)got); continue; } - if (status - + if (WIFEXITED(status)) { + int v = WEXITSTATUS(status); + if (v) warn("program failed with error exit status %d", v); + exit(status); + } else if (WIFSIGNALED(status)) { + int s = WTERMSIG(status); + err(status & 0xff, "program died due to fatal signal %s%s", + strsignal(s), WCOREDUMP(status) ? " (core dumped" : ""); + } else { + err(127, "program failed with crazy wait status %#x", status); + } + } + exit(127); +} static void setup_handlers(void) { struct sigaction sa; -- 2.30.2