Locking issue in action_bridge and bridge_exec
authorDavid Vossel <dvossel@digium.com>
Wed, 18 Feb 2009 22:51:38 +0000 (22:51 +0000)
committerDavid Vossel <dvossel@digium.com>
Wed, 18 Feb 2009 22:51:38 +0000 (22:51 +0000)
commite30d2c1d450a6d09ec5cc0f2759e8b9f256eb950
treeca9b6c210bff7cbf721e117132ba2ff65223cd1b
parentc8fe75da36d72d2fdc5ba2d0aa4031e713a1fe22
Locking issue in action_bridge and bridge_exec

action_bridge() and bridge_exec() both search for the channels to bridge to, and then immediately drop the lock.  Instead, they should hold the lock until the masquerade is complete.  This will guarantee the channel remains and prevent any other weirdness from occurring.  In action_bridge() some more weirdness comes into play.  Both channels are needlessly locked at the same time and perform the exact same logic.  It makes sense from a coding organizational standpoint, but could cause a theoretical deadlock so I split the code up.  There is an issue associated with this, but since its a rather complicated thing to reproduce I'm not certain this alone will close it.

issue# 14296
Review: http://reviewboard.digium.com/r/167/

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