summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Vossel <dvossel@digium.com>2010-01-08 19:39:30 +0000
committerDavid Vossel <dvossel@digium.com>2010-01-08 19:39:30 +0000
commitbf0674777819b26ac152e3d89c199c48aa63bd85 (patch)
tree8ff0106d4ec11872e6f5ff8d7a7036d51013f775 /include
parent98b69d84e1117fcd5ca8851110c26fa431f57c43 (diff)
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
Diffstat (limited to 'include')
-rw-r--r--include/asterisk/audiohook.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/asterisk/audiohook.h b/include/asterisk/audiohook.h
index bb81784df..91081ce08 100644
--- a/include/asterisk/audiohook.h
+++ b/include/asterisk/audiohook.h
@@ -205,6 +205,9 @@ struct ast_frame *ast_audiohook_write_list(struct ast_channel *chan, struct ast_
/*! \brief Update audiohook's status
* \param audiohook Audiohook structure
* \param audiohook status enum
+ *
+ * \note once status is updated to DONE, this function can not be used to set the
+ * status back to any other setting. Setting DONE effectively locks the status as such.
*/
void ast_audiohook_update_status(struct ast_audiohook *audiohook, enum ast_audiohook_status status);