From 3349651ff4e863cd197f7bab667bbd16aa9ff905 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Fri, 9 Mar 2012 00:57:36 +0100 Subject: [PATCH] callcgi: Properly wait for the handler process to exit. --- src/callcgi.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/callcgi.c b/src/callcgi.c index 3add3ed..31c41fb 100644 --- a/src/callcgi.c +++ b/src/callcgi.c @@ -24,6 +24,7 @@ #include #include #include +#include #ifdef HAVE_CONFIG_H #include @@ -343,6 +344,7 @@ int main(int argc, char **argv, char **envp) FILE *in, *out; char **headers; pid_t child; + int estat; environ = envp; signal(SIGPIPE, SIG_IGN); @@ -404,5 +406,14 @@ int main(int argc, char **argv, char **envp) printf("\n"); if(passdata(out, stdout)) kill(child, SIGINT); - return(0); + if(waitpid(child, &estat, 0) == child) { + if(WCOREDUMP(estat)) + flog(LOG_WARNING, "CGI handler `%s' dumped core", prog); + if(WIFEXITED(estat) && !WEXITSTATUS(estat)) + return(0); + else + return(1); + } + flog(LOG_WARNING, "could not wait for CGI handler: %s", strerror(errno)); + return(1); } -- 2.11.0