[asterisk-commits] dvossel: branch 1.6.2 r229012 - /branches/1.6.2/channels/chan_sip.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Nov 9 16:17:38 CST 2009
Author: dvossel
Date: Mon Nov 9 16:17:31 2009
New Revision: 229012
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=229012
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 #15848)
Reported by: fhackenberger
Patches:
digium_bug_0015848 uploaded by fhackenberger (license 592)
Tested by: fhackenberger, lmadsen, TomS, shin-shoryuken, dvossel
Modified:
branches/1.6.2/channels/chan_sip.c
Modified: branches/1.6.2/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.2/channels/chan_sip.c?view=diff&rev=229012&r1=229011&r2=229012
==============================================================================
--- branches/1.6.2/channels/chan_sip.c (original)
+++ branches/1.6.2/channels/chan_sip.c Mon Nov 9 16:17:31 2009
@@ -6099,15 +6099,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