loader: Create ast_module_running_ref.

This function returns NULL if the module in question is not running.  I
did not change ast_module_ref as most callers do not check the result
and they always call ast_module_unref.

Make use of this function when running registered items from:
* app_stack API's
* bridge technologies
* CLI commands
* File formats
* Manager Actions
* RTP engines
* Sorcery Wizards
* Timing Interfaces
* Translators
* AGI Commands
* Fax Technologies

ASTERISK-20346 #close

Change-Id: Ia16fd28e188b2fc0b9d18b8a5d9cacc31df73fcc
This commit is contained in:
Corey Farrell
2017-12-29 19:24:02 -05:00
parent 7f4facc5e4
commit 55f1d69c43
13 changed files with 161 additions and 80 deletions

View File

@@ -1702,6 +1702,16 @@ struct ast_module *__ast_module_ref(struct ast_module *mod, const char *file, in
return mod;
}
struct ast_module *__ast_module_running_ref(struct ast_module *mod,
const char *file, int line, const char *func)
{
if (!mod || !mod->flags.running) {
return NULL;
}
return __ast_module_ref(mod, file, line, func);
}
void __ast_module_shutdown_ref(struct ast_module *mod, const char *file, int line, const char *func)
{
if (!mod || mod->flags.keepuntilshutdown) {