mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
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:
17
main/cli.c
17
main/cli.c
@@ -2679,9 +2679,12 @@ static char *__ast_cli_generator(const char *text, const char *word, int state,
|
||||
.n = state - matchnum,
|
||||
.argv = argv,
|
||||
.argc = x};
|
||||
ast_module_ref(e->module);
|
||||
ret = e->handler(e, CLI_GENERATE, &a);
|
||||
ast_module_unref(e->module);
|
||||
|
||||
/* If the command is in a module it must be running. */
|
||||
if (!e->module || ast_module_running_ref(e->module)) {
|
||||
ret = e->handler(e, CLI_GENERATE, &a);
|
||||
ast_module_unref(e->module);
|
||||
}
|
||||
}
|
||||
if (ret)
|
||||
break;
|
||||
@@ -2760,9 +2763,11 @@ int ast_cli_command_full(int uid, int gid, int fd, const char *s)
|
||||
*/
|
||||
args[0] = (char *)e;
|
||||
|
||||
ast_module_ref(e->module);
|
||||
retval = e->handler(e, CLI_HANDLER, &a);
|
||||
ast_module_unref(e->module);
|
||||
/* If the command is in a module it must be running. */
|
||||
if (!e->module || ast_module_running_ref(e->module)) {
|
||||
retval = e->handler(e, CLI_HANDLER, &a);
|
||||
ast_module_unref(e->module);
|
||||
}
|
||||
|
||||
if (retval == CLI_SHOWUSAGE) {
|
||||
ast_cli(fd, "%s", S_OR(e->usage, "Invalid usage, but no usage information available.\n"));
|
||||
|
Reference in New Issue
Block a user