Skip to content
Snippets Groups Projects
  • Matthew Jordan's avatar
    8bc3c1e2
    Fix deadlock in SIP transfers that involve a REFER request · 8bc3c1e2
    Matthew Jordan authored
    In r367163, "send to voicemail" functionality was added to the SIP channel
    driver.  This required updating the party redirecting information for the
    channel based on the headers provided in the REFER request.  When the
    redirecting party information is updated on the channel, a call to
    ast_indicate_data occurs.  Because handle_request_refer still had the sip_pvt
    locked, a deadlock could occur between the pbx_thread and the do_monitor thread
    servicing the REFER request.
    
    This patch preserves the proper locking order between the channel and the
    sip_pvt by ensuring that the sip_pvt is unlocked prior to updating the party
    redirecting information on the channel.
    
    (closes issue AST-903)
    Reported by: Matt Jordan
    patches:
      jira_ast_903_trunk.patch by rmudgett (license 5621)
    
    git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368793 65c4cc65-6c06-0410-ace0-fbb531ad65f3
    8bc3c1e2
    History
    Fix deadlock in SIP transfers that involve a REFER request
    Matthew Jordan authored
    In r367163, "send to voicemail" functionality was added to the SIP channel
    driver.  This required updating the party redirecting information for the
    channel based on the headers provided in the REFER request.  When the
    redirecting party information is updated on the channel, a call to
    ast_indicate_data occurs.  Because handle_request_refer still had the sip_pvt
    locked, a deadlock could occur between the pbx_thread and the do_monitor thread
    servicing the REFER request.
    
    This patch preserves the proper locking order between the channel and the
    sip_pvt by ensuring that the sip_pvt is unlocked prior to updating the party
    redirecting information on the channel.
    
    (closes issue AST-903)
    Reported by: Matt Jordan
    patches:
      jira_ast_903_trunk.patch by rmudgett (license 5621)
    
    git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368793 65c4cc65-6c06-0410-ace0-fbb531ad65f3
chan_sip.c 1.10 MiB