diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c index 501a3aa..5b4be3f 100644 --- a/res/res_musiconhold.c +++ b/res/res_musiconhold.c @@ -1492,23 +1492,26 @@ static int local_ast_moh_start(struct ast_channel *chan, const char *mclass, con static void local_ast_moh_stop(struct ast_channel *chan) { - ast_clear_flag(chan, AST_FLAG_MOH); - ast_deactivate_generator(chan); - - ast_channel_lock(chan); - if (chan->music_state) { - if (chan->stream) { - ast_closestream(chan->stream); - chan->stream = NULL; - } - } - ast_manager_event(chan, EVENT_FLAG_CALL, "MusicOnHold", - "State: Stop\r\n" - "Channel: %s\r\n" - "UniqueID: %s\r\n", - chan->name, chan->uniqueid); - ast_channel_unlock(chan); + if (ast_test_flag(chan, AST_FLAG_MOH)) { + ast_clear_flag(chan, AST_FLAG_MOH); + ast_deactivate_generator(chan); + + ast_channel_lock(chan); + if (chan->music_state) { + if (chan->stream) { + ast_closestream(chan->stream); + chan->stream = NULL; + } + } + + ast_manager_event(chan, EVENT_FLAG_CALL, "MusicOnHold", + "State: Stop\r\n" + "Channel: %s\r\n" + "UniqueID: %s\r\n", + chan->name, chan->uniqueid); + ast_channel_unlock(chan); + } } static void moh_class_destructor(void *obj)