Fix sighup with AGI (bug #4854)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6264 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.2-netsec
Mark Spencer 20 years ago
parent 033d64ba42
commit 4f0d1b8428

@ -211,6 +211,7 @@ static int launch_script(char *script, char *argv[], int *fds, int *efd, int *op
int audio[2];
int x;
int res;
sigset_t signal_set;
if (!strncasecmp(script, "agi://", 6))
return launch_netscript(script, argv, fds, efd, opid);
@ -266,9 +267,17 @@ static int launch_script(char *script, char *argv[], int *fds, int *efd, int *op
} else {
close(STDERR_FILENO + 1);
}
/* unblock important signal handlers */
if (sigfillset(&signal_set) || pthread_sigmask(SIG_UNBLOCK, &signal_set, NULL)) {
ast_log(LOG_WARNING, "unable to unblock signals for AGI script: %s\n", strerror(errno));
exit(1);
}
/* Close everything but stdin/out/error */
for (x=STDERR_FILENO + 2;x<1024;x++)
close(x);
/* Execute script */
execv(script, argv);
/* Can't use ast_log since FD's are closed */
@ -1817,8 +1826,10 @@ static int run_agi(struct ast_channel *chan, char *request, AGI *agi, int pid, i
}
}
/* Notify process */
if (pid > -1)
kill(pid, SIGHUP);
if (pid > -1) {
if (kill(pid, SIGHUP))
ast_log(LOG_WARNING, "unable to send SIGHUP to AGI process %d: %s\n", pid, strerror(errno));
}
fclose(readf);
return returnstatus;
}

Loading…
Cancel
Save