Dolda2000 GitWeb
/
ashd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
79ad402
)
callcgi: Properly wait for the handler process to exit.
author
Fredrik Tolf
<fredrik@dolda2000.com>
Thu, 8 Mar 2012 23:57:36 +0000
(
00:57
+0100)
committer
Fredrik Tolf
<fredrik@dolda2000.com>
Thu, 8 Mar 2012 23:57:36 +0000
(
00:57
+0100)
src/callcgi.c
patch
|
blob
|
blame
|
history
diff --git
a/src/callcgi.c
b/src/callcgi.c
index
3add3ed
..
31c41fb
100644
(file)
--- a/
src/callcgi.c
+++ b/
src/callcgi.c
@@
-24,6
+24,7
@@
#include <ctype.h>
#include <signal.h>
#include <sys/poll.h>
#include <ctype.h>
#include <signal.h>
#include <sys/poll.h>
+#include <sys/wait.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
@@
-343,6
+344,7
@@
int main(int argc, char **argv, char **envp)
FILE *in, *out;
char **headers;
pid_t child;
FILE *in, *out;
char **headers;
pid_t child;
+ int estat;
environ = envp;
signal(SIGPIPE, SIG_IGN);
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);
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);
}
}