mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-13 00:04:53 +00:00
Manager: Fix Manager Action ModuleLoad to give correct response when reloading
Prior to this patch, ModuleLoad would respond with an error indicating that the requested module wasn't found in spite of finding and reloading the module. Review: https://reviewboard.asterisk.org/r/4373/ ASTERISK-24721 #close git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431153 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -6025,14 +6025,31 @@ static int manager_moduleload(struct mansession *s, const struct message *m)
|
|||||||
astman_send_ack(s, m, "Module unloaded.");
|
astman_send_ack(s, m, "Module unloaded.");
|
||||||
}
|
}
|
||||||
} else if (!strcasecmp(loadtype, "reload")) {
|
} else if (!strcasecmp(loadtype, "reload")) {
|
||||||
|
/* TODO: Unify the ack/error messages here with action_reload */
|
||||||
if (!ast_strlen_zero(module)) {
|
if (!ast_strlen_zero(module)) {
|
||||||
res = ast_module_reload(module);
|
enum ast_module_reload_result reload_res = ast_module_reload(module);
|
||||||
if (res == 0) {
|
|
||||||
|
switch (reload_res) {
|
||||||
|
case AST_MODULE_RELOAD_NOT_FOUND:
|
||||||
astman_send_error(s, m, "No such module.");
|
astman_send_error(s, m, "No such module.");
|
||||||
} else if (res == 1) {
|
break;
|
||||||
|
case AST_MODULE_RELOAD_NOT_IMPLEMENTED:
|
||||||
astman_send_error(s, m, "Module does not support reload action.");
|
astman_send_error(s, m, "Module does not support reload action.");
|
||||||
} else {
|
break;
|
||||||
|
case AST_MODULE_RELOAD_ERROR:
|
||||||
|
astman_send_error(s, m, "An unknown error occurred");
|
||||||
|
break;
|
||||||
|
case AST_MODULE_RELOAD_IN_PROGRESS:
|
||||||
|
astman_send_error(s, m, "A reload is in progress");
|
||||||
|
break;
|
||||||
|
case AST_MODULE_RELOAD_UNINITIALIZED:
|
||||||
|
astman_send_error(s, m, "Module not initialized");
|
||||||
|
break;
|
||||||
|
case AST_MODULE_RELOAD_QUEUED:
|
||||||
|
case AST_MODULE_RELOAD_SUCCESS:
|
||||||
|
/* Treat a queued request as success */
|
||||||
astman_send_ack(s, m, "Module reloaded.");
|
astman_send_ack(s, m, "Module reloaded.");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ast_module_reload(NULL); /* Reload all modules */
|
ast_module_reload(NULL); /* Reload all modules */
|
||||||
|
Reference in New Issue
Block a user