From d5bf92f15929df7395f91fea5bd71bb523185e3a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 14 Apr 2009 02:29:34 +0000 Subject: [PATCH] kill zombies git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13013 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- libs/esl/ivrd.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libs/esl/ivrd.c b/libs/esl/ivrd.c index 92687b1c10..d408139824 100644 --- a/libs/esl/ivrd.c +++ b/libs/esl/ivrd.c @@ -35,22 +35,25 @@ #include #include + static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in *addr) { esl_handle_t handle = {{0}}; char path_buffer[1024] = { 0 }; const char *path; - + if (fork()) { close(client_sock); return; } + esl_attach_handle(&handle, client_sock, addr); if (!(path = esl_event_get_header(handle.info_event, "variable_ivr_path"))) { + esl_disconnect(&handle); esl_log(ESL_LOG_ERROR, "Missing ivr_path param!\n"); - return; + exit(0); } strncpy(path_buffer, path, sizeof(path_buffer) - 1); @@ -63,12 +66,10 @@ static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struc handle.sock = -1; esl_disconnect(&handle); - /* DOH! we're still here! Close the socket. */ - execl(path_buffer, path_buffer, NULL); - esl_log(ESL_LOG_ERROR, "Error %d\n", client_sock); + //system(path_buffer); close(client_sock); - + exit(0); } int main(int argc, char *argv[]) @@ -92,6 +93,8 @@ int main(int argc, char *argv[]) return -1; } + signal(SIGCHLD, SIG_IGN); + esl_listen(ip, port, mycallback); return 0;