Author: mjordan Date: Tue Feb 24 16:14:44 2015 New Revision: 432200 URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=432200 Log: 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 ........ Merged revisions 432198 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 432199 from http://svn.asterisk.org/svn/asterisk/branches/13 Modified: trunk/ (props changed) trunk/channels/chan_sip.c Propchange: trunk/ ------------------------------------------------------------------------------ Binary property 'branch-13-merged' - no diff available. Modified: trunk/channels/chan_sip.c URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_sip.c?view=diff&rev=432200&r1=432199&r2=432200 ============================================================================== --- trunk/channels/chan_sip.c (original) +++ trunk/channels/chan_sip.c Tue Feb 24 16:14:44 2015 @@ -28915,7 +28915,7 @@ 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 { -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits