Files
asterisk/main
Richard Mudgett e6de0ecf48 Merged revisions 334009 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8

........
  r334009 | rmudgett | 2011-08-31 10:20:31 -0500 (Wed, 31 Aug 2011) | 43 lines
  
  Call pickup race leaves orphaned channels or crashes.
  
  Multiple users attempting to pickup a call that has been forked to
  multiple extensions either crashes or fails a masquerade with a "bad
  things may happen" message.
  
  This is the scenario that is causing all the grief:
  1) Pickup target is selected
  2) target is marked as being picked up in ast_do_pickup()
  3) target is unlocked by ast_do_pickup()
  4) app dial or queue gets a chance to hang up losing calls and calls
  ast_hangup() on target
  5) SINCE A MASQUERADE HAS NOT BEEN SETUP YET BY ast_do_pickup() with
  ast_channel_masquerade(), ast_hangup() completes successfully and the
  channel is no longer in the channels container.
  6) ast_do_pickup() then calls ast_channel_masquerade() to schedule the
  masquerade on the dead channel.
  7) ast_do_pickup() then calls ast_do_masquerade() on the dead channel
  8) bad things happen while doing the masquerade and in the process
  ast_do_masquerade() puts the dead channel back into the channels container
  9) The "orphaned" channel is visible in the channels list if a crash does
  not happen.
  
  This patch does the following:
  
  * Made ast_hangup() set AST_FLAG_ZOMBIE on a successfully hung-up channel
  and not release the channel lock until that has happened.
  
  * Made __ast_channel_masquerade() not setup a masquerade if either channel
  has AST_FLAG_ZOMBIE set.
  
  * Fix chan_agent misuse of AST_FLAG_ZOMBIE since it would no longer work.
  
  (closes issue ASTERISK-18222)
  Reported by: Alec Davis
  Tested by: rmudgett, Alec Davis, irroot, Karsten Wemheuer
  
  (closes issue ASTERISK-18273)
  Reported by: Karsten Wemheuer
  Tested by: rmudgett, Alec Davis, irroot, Karsten Wemheuer
  
  Review: https://reviewboard.asterisk.org/r/1400/
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@334010 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-08-31 15:23:11 +00:00
..
2010-12-20 09:14:45 +00:00
2011-02-23 23:55:58 +00:00
2011-05-26 15:55:22 +00:00