diff --git a/include/asterisk/audiohook.h b/include/asterisk/audiohook.h index 516c59f6dbd9abe3ca0cb7dece609a1b04f8342f..1a4e4696a6a8e6d80ba4674d590b18a5aa76aad7 100644 --- a/include/asterisk/audiohook.h +++ b/include/asterisk/audiohook.h @@ -175,11 +175,12 @@ int ast_audiohook_attach(struct ast_channel *chan, struct ast_audiohook *audioho */ int ast_audiohook_detach(struct ast_audiohook *audiohook); -/*! \brief Detach audiohooks from list and destroy said list - * \param audiohook_list List of audiohooks - * \return Returns 0 on success, -1 on failure +/*! + * \brief Detach audiohooks from list and destroy said list + * \param audiohook_list List of audiohooks (NULL tolerant) + * \return Nothing */ -int ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list); +void ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list); /*! \brief Move an audiohook from one channel to a new one * @@ -221,7 +222,9 @@ int ast_audiohook_detach_source(struct ast_channel *chan, const char *source); int ast_audiohook_remove(struct ast_channel *chan, struct ast_audiohook *audiohook); /*! - * \brief determines if a audiohook_list is empty or not. + * \brief Determine if a audiohook_list is empty or not. + * + * \param audiohook Audiohook to check. (NULL also means empty) * * retval 0 false, 1 true */ diff --git a/main/audiohook.c b/main/audiohook.c index d46936223d7e76a25a3ab433ecf11ef1e00c4088..6e02946aa1cf75cf664c3d2b750e35894115c305 100644 --- a/main/audiohook.c +++ b/main/audiohook.c @@ -512,14 +512,14 @@ int ast_audiohook_detach(struct ast_audiohook *audiohook) return 0; } -/*! \brief Detach audiohooks from list and destroy said list - * \param audiohook_list List of audiohooks - * \return Returns 0 on success, -1 on failure - */ -int ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list) +void ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list) { - int i = 0; - struct ast_audiohook *audiohook = NULL; + int i; + struct ast_audiohook *audiohook; + + if (!audiohook_list) { + return; + } /* Drop any spies */ while ((audiohook = AST_LIST_REMOVE_HEAD(&audiohook_list->spy_list, list))) { @@ -547,8 +547,6 @@ int ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list) /* Free ourselves */ ast_free(audiohook_list); - - return 0; } /*! \brief find an audiohook based on its source @@ -899,13 +897,10 @@ static struct ast_frame *audio_audiohook_write_list(struct ast_channel *chan, st int ast_audiohook_write_list_empty(struct ast_audiohook_list *audiohook_list) { - if (AST_LIST_EMPTY(&audiohook_list->spy_list) && - AST_LIST_EMPTY(&audiohook_list->whisper_list) && - AST_LIST_EMPTY(&audiohook_list->manipulate_list)) { - - return 1; - } - return 0; + return !audiohook_list + || (AST_LIST_EMPTY(&audiohook_list->spy_list) + && AST_LIST_EMPTY(&audiohook_list->whisper_list) + && AST_LIST_EMPTY(&audiohook_list->manipulate_list)); } /*! \brief Pass a frame off to be handled by the audiohook core diff --git a/main/channel.c b/main/channel.c index f76d6a845b775dc050b18c1ee818573d8afa91c5..c5983199aa08452721109257bd7b696bb87b7836 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2632,8 +2632,7 @@ void ast_set_hangupsource(struct ast_channel *chan, const char *source, int forc int ast_channel_has_audio_frame_or_monitor(struct ast_channel *chan) { return ast_channel_monitor(chan) - || (ast_channel_audiohooks(chan) - && !ast_audiohook_write_list_empty(ast_channel_audiohooks(chan))) + || !ast_audiohook_write_list_empty(ast_channel_audiohooks(chan)) || !ast_framehook_list_contains_no_active(ast_channel_framehooks(chan)); }