[Freeswitch-svn] [commit] r13013 - freeswitch/trunk/libs/esl

FreeSWITCH SVN anthm at freeswitch.org
Mon Apr 13 19:29:34 PDT 2009


Author: anthm
Date: Mon Apr 13 21:29:34 2009
New Revision: 13013

Log:
kill zombies

Modified:
   freeswitch/trunk/libs/esl/ivrd.c

Modified: freeswitch/trunk/libs/esl/ivrd.c
==============================================================================
--- freeswitch/trunk/libs/esl/ivrd.c	(original)
+++ freeswitch/trunk/libs/esl/ivrd.c	Mon Apr 13 21:29:34 2009
@@ -35,22 +35,25 @@
 #include <stdlib.h>
 #include <esl.h>
 
+
 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 @@
 	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 @@
 		return -1;
 	}
 
+	signal(SIGCHLD, SIG_IGN);
+
 	esl_listen(ip, port, mycallback);
 	
 	return 0;



More information about the Freeswitch-svn mailing list