Avoid deadlock during R4 call transfer
There was a possibility that during attended call transfer, deadlock happened in locking bridge_channel and channel. bridge_channel_queue_deferred_frames() was waiting for brcm_indicate() to unlock the channel, while brcm_indicate() which called ast_bridge_channel_queue_frame() was waiting for bridge_channel_queue_deferred_frames() to unlock the bridge. Creating new macro to lock both channel and bridge_channel at the same time and sched_yield() -> retry if failed and use it in bridge_channel_queue_deferred_frames() avoiding the deadlock.
Loading
Please register or sign in to comment