-
- Downloads
chan_pjsip: Fix deadlock when masquerading PJSIP channels.
Performing a directed call pickup resulted in a deadlock when PJSIP channels were involved. A masquerade needs to hold onto the channel locks while it swaps channel information between the two channels involved in the masquerade. With PJSIP channels, the fixup routine needed to push a fixup task onto the PJSIP channel's serializer. Unfortunately, if the serializer was also processing a task that needed to lock the channel, you get deadlock. * Added a new control frame that is used to notify the channels that a masquerade is about to start and when it has completed. * Added the ability to query taskprocessors if the current thread is the taskprocessor thread. * Added the ability to suspend/unsuspend the PJSIP serializer thread so a masquerade could fixup the PJSIP channel without using the serializer. ASTERISK-24356 #close Reported by: rmudgett Review: https://reviewboard.asterisk.org/r/4034/ ........ Merged revisions 424471 from http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged revisions 424472 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424473 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Showing
- addons/chan_ooh323.c 1 addition, 0 deletionsaddons/chan_ooh323.c
- channels/chan_iax2.c 3 additions, 0 deletionschannels/chan_iax2.c
- channels/chan_misdn.c 1 addition, 0 deletionschannels/chan_misdn.c
- channels/chan_motif.c 1 addition, 0 deletionschannels/chan_motif.c
- channels/chan_pjsip.c 27 additions, 25 deletionschannels/chan_pjsip.c
- channels/chan_sip.c 1 addition, 0 deletionschannels/chan_sip.c
- channels/chan_skinny.c 1 addition, 0 deletionschannels/chan_skinny.c
- channels/chan_unistim.c 1 addition, 0 deletionschannels/chan_unistim.c
- funcs/func_frame_trace.c 4 additions, 0 deletionsfuncs/func_frame_trace.c
- include/asterisk/frame.h 1 addition, 0 deletionsinclude/asterisk/frame.h
- include/asterisk/res_pjsip_session.h 46 additions, 19 deletionsinclude/asterisk/res_pjsip_session.h
- include/asterisk/taskprocessor.h 10 additions, 0 deletionsinclude/asterisk/taskprocessor.h
- main/bridge_channel.c 4 additions, 0 deletionsmain/bridge_channel.c
- main/channel.c 26 additions, 3 deletionsmain/channel.c
- main/core_unreal.c 6 additions, 0 deletionsmain/core_unreal.c
- main/taskprocessor.c 16 additions, 2 deletionsmain/taskprocessor.c
- res/res_pjsip_session.c 102 additions, 0 deletionsres/res_pjsip_session.c
- res/res_pjsip_session.exports.in 2 additions, 0 deletionsres/res_pjsip_session.exports.in
Loading
Please register or sign in to comment