Only detach and destroy the whisper audiohooks if they are actually in use.
authorJoshua Colp <jcolp@digium.com>
Sat, 13 Dec 2008 00:59:24 +0000 (00:59 +0000)
committerJoshua Colp <jcolp@digium.com>
Sat, 13 Dec 2008 00:59:24 +0000 (00:59 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@163912 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_chanspy.c

index 0f9ae44..ccde2a6 100644 (file)
@@ -611,14 +611,19 @@ static int channel_spy(struct ast_channel *chan, struct chanspy_ds *spyee_chansp
        ast_clear_flag(chan, AST_FLAG_END_DTMF_ONLY);
        ast_channel_unlock(chan);
 
-       ast_audiohook_lock(&csth.whisper_audiohook);
-       ast_audiohook_detach(&csth.whisper_audiohook);
-       ast_audiohook_unlock(&csth.whisper_audiohook);
-       ast_audiohook_destroy(&csth.whisper_audiohook);
-       ast_audiohook_lock(&csth.bridge_whisper_audiohook);
-       ast_audiohook_detach(&csth.bridge_whisper_audiohook);
-       ast_audiohook_unlock(&csth.bridge_whisper_audiohook);
-       ast_audiohook_destroy(&csth.bridge_whisper_audiohook);
+       if (ast_test_flag(flags, OPTION_WHISPER)) {
+               ast_audiohook_lock(&csth.whisper_audiohook);
+               ast_audiohook_detach(&csth.whisper_audiohook);
+               ast_audiohook_unlock(&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_detach(&csth.bridge_whisper_audiohook);
+               ast_audiohook_unlock(&csth.bridge_whisper_audiohook);
+               ast_audiohook_destroy(&csth.bridge_whisper_audiohook);
+       }
 
        ast_audiohook_lock(&csth.spy_audiohook);
        ast_audiohook_detach(&csth.spy_audiohook);