chiark / gitweb /
cgi-fcgi-interp: new garbage collection approach, compiles
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 29 Mar 2016 18:29:30 +0000 (19:29 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 29 Mar 2016 18:32:52 +0000 (19:32 +0100)
cprogs/cgi-fcgi-interp.c

index 99997d08745220efec0702fe36b0251d7d1e45fa..f59640f4305eb86342d135462f7aa02e3a44e2c5 100644 (file)
 #include <err.h>
 #include <time.h>
 #include <signal.h>
+#include <sys/wait.h>
        
 #include <nettle/sha.h>
 
@@ -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;