diff --git a/libs/esl/ivrd.c b/libs/esl/ivrd.c index 2e2e6b2fa4..6098abcaf9 100644 --- a/libs/esl/ivrd.c +++ b/libs/esl/ivrd.c @@ -35,6 +35,15 @@ #include #include #include +#include + +static void handle_SIGCHLD(int sig) +{ + int status = 0; + + wait(&status); + return; +} static void my_forking_callback(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in *addr) { @@ -43,6 +52,8 @@ static void my_forking_callback(esl_socket_t server_sock, esl_socket_t client_so const char *path; char arg[64] = { 0 }; + signal(SIGCHLD, handle_SIGCHLD); + if (fork()) { close(client_sock); return;