fixes AUDIOHOOK_INHERIT regression
authorDavid Vossel <dvossel@digium.com>
Fri, 8 Jan 2010 19:39:30 +0000 (19:39 +0000)
committerDavid Vossel <dvossel@digium.com>
Fri, 8 Jan 2010 19:39:30 +0000 (19:39 +0000)
commitbf0674777819b26ac152e3d89c199c48aa63bd85
tree8ff0106d4ec11872e6f5ff8d7a7036d51013f775
parent98b69d84e1117fcd5ca8851110c26fa431f57c43
fixes AUDIOHOOK_INHERIT regression

During the process of removing an audiohook from one channel
and attaching it to another the audiohook's status is updated
to DONE and then back to whatever it was previously.  Typically
updating the status after setting it to DONE is not a good idea
because DONE can trigger unrecoverable audiohook destruction
events... because of this a conditional check was added to
audiohook_update_status to explicitly prevent the audiohook
from ever changing after being set to DONE.  It was this check
that prevented audiohook inherit from work properly though.

Now ast_audiohook_move_by_source is treated as a special exception,
as the audiohook must be returned to its previous status after
attaching it to the new channel.  This is only a safe operation
because the audiohook's lock is held the entire time, otherwise
this could cause trouble.

(closes issue #16522)
Reported by: corruptor

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@238635 65c4cc65-6c06-0410-ace0-fbb531ad65f3
include/asterisk/audiohook.h
main/audiohook.c