From: Matthew Jordan Date: Tue, 24 Feb 2015 22:14:02 +0000 (+0000) Subject: channels/chan_sip: Fix crash when transmitting packet after thread shutdown X-Git-Tag: 11.17.0-rc1~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=789d4379b6566314a7b9b56b7a4811d7fa9507ce;p=thirdparty%2Fasterisk.git channels/chan_sip: Fix crash when transmitting packet after thread shutdown When the monitor thread is stopped, its pthread ID is set to a specific value (AST_PTHREADT_STOP) so that later portions of the code can determine whether or not it is safe to manipulate the thread. Unfortunately, __sip_reliable_xmit failed to check for that value, checking instead only for AST_PTHREAD_STOP. Passing the invalid yet very specific value to pthread_kill causes a crash. This patch adds a check for AST_PTHREADT_STOP in __sip_reliable_xmit such that it doesn't attempt to poke the thread if the thread has already been stopped. ASTERISK-24800 #close Reported by: JoshE git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@432198 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 2f0a7cf039..bdf587e177 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -29207,7 +29207,7 @@ static int restart_monitor(void) ast_log(LOG_WARNING, "Cannot kill myself\n"); return -1; } - if (monitor_thread != AST_PTHREADT_NULL) { + if (monitor_thread != AST_PTHREADT_NULL && monitor_thread != AST_PTHREADT_STOP) { /* Wake up the thread */ pthread_kill(monitor_thread, SIGURG); } else {