mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 12:16:00 +00:00
Always detach and destroy the whisper and barge audiohooks. Additionally also allow an audiohook to be detached if it has not been attached.
(closes issue #14414) Reported by: bluecrow76 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@173902 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -611,19 +611,15 @@ static int channel_spy(struct ast_channel *chan, struct chanspy_ds *spyee_chansp
|
|||||||
ast_clear_flag(chan, AST_FLAG_END_DTMF_ONLY);
|
ast_clear_flag(chan, AST_FLAG_END_DTMF_ONLY);
|
||||||
ast_channel_unlock(chan);
|
ast_channel_unlock(chan);
|
||||||
|
|
||||||
if (ast_test_flag(flags, OPTION_WHISPER)) {
|
|
||||||
ast_audiohook_lock(&csth.whisper_audiohook);
|
ast_audiohook_lock(&csth.whisper_audiohook);
|
||||||
ast_audiohook_detach(&csth.whisper_audiohook);
|
ast_audiohook_detach(&csth.whisper_audiohook);
|
||||||
ast_audiohook_unlock(&csth.whisper_audiohook);
|
ast_audiohook_unlock(&csth.whisper_audiohook);
|
||||||
ast_audiohook_destroy(&csth.whisper_audiohook);
|
ast_audiohook_destroy(&csth.whisper_audiohook);
|
||||||
}
|
|
||||||
|
|
||||||
if (ast_test_flag(flags, OPTION_BARGE)) {
|
|
||||||
ast_audiohook_lock(&csth.bridge_whisper_audiohook);
|
ast_audiohook_lock(&csth.bridge_whisper_audiohook);
|
||||||
ast_audiohook_detach(&csth.bridge_whisper_audiohook);
|
ast_audiohook_detach(&csth.bridge_whisper_audiohook);
|
||||||
ast_audiohook_unlock(&csth.bridge_whisper_audiohook);
|
ast_audiohook_unlock(&csth.bridge_whisper_audiohook);
|
||||||
ast_audiohook_destroy(&csth.bridge_whisper_audiohook);
|
ast_audiohook_destroy(&csth.bridge_whisper_audiohook);
|
||||||
}
|
|
||||||
|
|
||||||
ast_audiohook_lock(&csth.spy_audiohook);
|
ast_audiohook_lock(&csth.spy_audiohook);
|
||||||
ast_audiohook_detach(&csth.spy_audiohook);
|
ast_audiohook_detach(&csth.spy_audiohook);
|
||||||
|
@@ -354,7 +354,7 @@ int ast_audiohook_attach(struct ast_channel *chan, struct ast_audiohook *audioho
|
|||||||
*/
|
*/
|
||||||
int ast_audiohook_detach(struct ast_audiohook *audiohook)
|
int ast_audiohook_detach(struct ast_audiohook *audiohook)
|
||||||
{
|
{
|
||||||
if (audiohook->status == AST_AUDIOHOOK_STATUS_DONE)
|
if (audiohook->status == AST_AUDIOHOOK_STATUS_NEW || audiohook->status == AST_AUDIOHOOK_STATUS_DONE)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
audiohook->status = AST_AUDIOHOOK_STATUS_SHUTDOWN;
|
audiohook->status = AST_AUDIOHOOK_STATUS_SHUTDOWN;
|
||||||
|
Reference in New Issue
Block a user