Merged revisions 165661 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r165661 | russell | 2008-12-18 12:52:18 -0600 (Thu, 18 Dec 2008) | 7 lines Set the process group ID on the MOH process so that all children will get killed (closes issue #14099) Reported by: caspy Patches: res_musiconhold.c.patch.killpg.try2 uploaded by caspy (license 645) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@165662 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
parent
665b55e6f8
commit
8cc50d4677
|
@ -516,6 +516,7 @@ static int spawn_mp3(struct mohclass *class)
|
|||
ast_log(LOG_WARNING, "chdir() failed: %s\n", strerror(errno));
|
||||
_exit(1);
|
||||
}
|
||||
setpgid(0, getpid());
|
||||
if (ast_test_flag(class, MOH_CUSTOM)) {
|
||||
execv(argv[0], argv);
|
||||
} else {
|
||||
|
@ -597,11 +598,11 @@ static void *monmp3thread(void *data)
|
|||
class->srcfd = -1;
|
||||
pthread_testcancel();
|
||||
if (class->pid > 1) {
|
||||
kill(class->pid, SIGHUP);
|
||||
killpg(class->pid, SIGHUP);
|
||||
usleep(100000);
|
||||
kill(class->pid, SIGTERM);
|
||||
killpg(class->pid, SIGTERM);
|
||||
usleep(100000);
|
||||
kill(class->pid, SIGKILL);
|
||||
killpg(class->pid, SIGKILL);
|
||||
class->pid = 0;
|
||||
}
|
||||
} else {
|
||||
|
@ -1465,11 +1466,11 @@ static int ast_moh_destroy_one(struct mohclass *moh)
|
|||
/* Back when this was just mpg123, SIGKILL was fine. Now we need
|
||||
* to give the process a reason and time enough to kill off its
|
||||
* children. */
|
||||
kill(pid, SIGHUP);
|
||||
killpg(pid, SIGHUP);
|
||||
usleep(100000);
|
||||
kill(pid, SIGTERM);
|
||||
killpg(pid, SIGTERM);
|
||||
usleep(100000);
|
||||
kill(pid, SIGKILL);
|
||||
killpg(pid, SIGKILL);
|
||||
while ((ast_wait_for_input(moh->srcfd, 100) > 0) && (bytes = read(moh->srcfd, buff, 8192)) && time(NULL) < stop_time)
|
||||
tbytes = tbytes + bytes;
|
||||
ast_debug(1, "mpg123 pid %d and child died after %d bytes read\n", pid, tbytes);
|
||||
|
|
Loading…
Reference in New Issue