Commit 8942a4cd authored by valenok's avatar valenok

Ignoring SIGCHLD to let OS reap the zombies.

parent 9e524a2f
...@@ -2993,9 +2993,6 @@ static void handle_cgi_request(struct mg_connection *conn, const char *prog) { ...@@ -2993,9 +2993,6 @@ static void handle_cgi_request(struct mg_connection *conn, const char *prog) {
done: done:
if (pid != (pid_t) -1) { if (pid != (pid_t) -1) {
kill(pid, SIGKILL); kill(pid, SIGKILL);
#if !defined(_WIN32)
do {} while (waitpid(-1, &i, WNOHANG) > 0);
#endif
} }
if (fd_stdin[0] != -1) { if (fd_stdin[0] != -1) {
(void) close(fd_stdin[0]); (void) close(fd_stdin[0]);
...@@ -4133,6 +4130,8 @@ struct mg_context *mg_start(mg_callback_t user_callback, void *user_data, ...@@ -4133,6 +4130,8 @@ struct mg_context *mg_start(mg_callback_t user_callback, void *user_data,
// Ignore SIGPIPE signal, so if browser cancels the request, it // Ignore SIGPIPE signal, so if browser cancels the request, it
// won't kill the whole process. // won't kill the whole process.
(void) signal(SIGPIPE, SIG_IGN); (void) signal(SIGPIPE, SIG_IGN);
// Also ignoring SIGCHLD to let the OS to reap zombies properly.
(void) signal(SIGCHLD, SIG_IGN);
#endif // !_WIN32 #endif // !_WIN32
(void) pthread_mutex_init(&ctx->mutex, NULL); (void) pthread_mutex_init(&ctx->mutex, NULL);
......
...@@ -88,6 +88,11 @@ typedef void * (*mg_callback_t)(enum mg_event event, ...@@ -88,6 +88,11 @@ typedef void * (*mg_callback_t)(enum mg_event event,
// options: NULL terminated list of option_name, option_value pairs that // options: NULL terminated list of option_name, option_value pairs that
// specify Mongoose configuration parameters. // specify Mongoose configuration parameters.
// //
// Side-effects: on UNIX, ignores SIGCHLD and SIGPIPE signals. If custom
// processing is required for these, signal handlers must be set up
// after calling mg_start().
//
//
// Example: // Example:
// const char *options[] = { // const char *options[] = {
// "document_root", "/var/www", // "document_root", "/var/www",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment