]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Manager: Fix Manager Action ModuleLoad to give correct response when reloading
authorJonathan Rose <jrose@digium.com>
Tue, 27 Jan 2015 19:31:29 +0000 (19:31 +0000)
committerJonathan Rose <jrose@digium.com>
Tue, 27 Jan 2015 19:31:29 +0000 (19:31 +0000)
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
........

Merged revisions 431153 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431201 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index 0ed0fef3ae8068f4c3e01378d07fd760f41efa95..783a704de2049be47a6ff399a4ccfbae2adee34a 100644 (file)
@@ -6043,14 +6043,31 @@ static int manager_moduleload(struct mansession *s, const struct message *m)
                        astman_send_ack(s, m, "Module unloaded.");
                }
        } else if (!strcasecmp(loadtype, "reload")) {
+               /* TODO: Unify the ack/error messages here with action_reload */
                if (!ast_strlen_zero(module)) {
-                       res = ast_module_reload(module);
-                       if (res == 0) {
+                       enum ast_module_reload_result reload_res = ast_module_reload(module);
+
+                       switch (reload_res) {
+                       case AST_MODULE_RELOAD_NOT_FOUND:
                                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.");
-                       } 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.");
+                               break;
                        }
                } else {
                        ast_module_reload(NULL);        /* Reload all modules */