[asterisk-commits] dvossel: branch 1.6.1 r229014 - /branches/1.6.1/channels/chan_sip.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Nov 9 16:18:27 CST 2009
Author: dvossel
Date: Mon Nov 9 16:18:23 2009
New Revision: 229014
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=229014
Log:
fixes segfault when transferring a queue caller
In sip_hangup we attempted to lock p->owner after we set it to NULL.
Thanks to fhackenberger for reporting the issue and submitting a patch.
(closes issue 0015848)
Reported by: fhackenberger
Patches:
digium_bug_0015848 uploaded by fhackenberger (license 592)
Tested by: fhackenberger, lmadsen, TomS, shin-shoryuken, dvossel
Modified:
branches/1.6.1/channels/chan_sip.c
Modified: branches/1.6.1/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.1/channels/chan_sip.c?view=diff&rev=229014&r1=229013&r2=229014
==============================================================================
--- branches/1.6.1/channels/chan_sip.c (original)
+++ branches/1.6.1/channels/chan_sip.c Mon Nov 9 16:18:23 2009
@@ -5674,15 +5674,12 @@
* to lock the bridge. This may get hairy...
*/
while (bridge && ast_channel_trylock(bridge)) {
- struct ast_channel *chan = p->owner;
sip_pvt_unlock(p);
do {
- /* Use chan since p->owner could go NULL on us
- * while p is unlocked
- */
- CHANNEL_DEADLOCK_AVOIDANCE(chan);
+ /* Use oldowner since p->owner is already NULL */
+ CHANNEL_DEADLOCK_AVOIDANCE(oldowner);
} while (sip_pvt_trylock(p));
- bridge = p->owner ? ast_bridged_channel(p->owner) : NULL;
+ bridge = ast_bridged_channel(oldowner);
}
if (p->rtp)
More information about the asterisk-commits
mailing list