]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Ensures Asterisk closes when receiving terminal signals in 'no fork' mode.
authorJonathan Rose <jrose@digium.com>
Thu, 5 Jan 2012 16:16:51 +0000 (16:16 +0000)
committerJonathan Rose <jrose@digium.com>
Thu, 5 Jan 2012 16:16:51 +0000 (16:16 +0000)
When catching a signal, in no fork mode the console thread is identical to the thread
responsible for catching the signal and closing Asterisk, which requires it to first
dispense with the console thread. Prior to this patch, if these threads were identical,
upon receiving a killing signal, the thread will send an URG signal to itself, which
we also catch and then promptly do nothing with. Obviously this isn't useful behavior.

(closes issue ASTERISK-19127)
Reported By: Bryon Clark
Patches:
quit_on_signals.patch uploaded by Bryon Clark (license 6157)
........

Merged revisions 349672 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 349673 from http://svn.asterisk.org/svn/asterisk/branches/10

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@349674 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/asterisk.c

index 48192758c6e658eeb613d78879c026b6e11a3e75..37bc92f5c12f52a313c7619c2d1bdbd1d929e60f 100644 (file)
@@ -3128,7 +3128,7 @@ static void *monitor_sig_flags(void *unused)
                }
                if (sig_flags.need_quit) {
                        sig_flags.need_quit = 0;
-                       if (consolethread != AST_PTHREADT_NULL) {
+                       if ((consolethread != AST_PTHREADT_NULL) && (consolethread != pthread_self())) {
                                sig_flags.need_quit_handler = 1;
                                pthread_kill(consolethread, SIGURG);
                        } else {