]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merge r431153 from asterisk/branches/13
authorJonathan Rose <jrose@digium.com>
Fri, 30 Jan 2015 16:41:41 +0000 (16:41 +0000)
committerJonathan Rose <jrose@digium.com>
Fri, 30 Jan 2015 16:41:41 +0000 (16:41 +0000)
  r431153 | jrose | 2015-01-27 11:22:52 -0600 (Tue, 27 Jan 2015) | 9 lines

  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/certified/branches/13.1@431467 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index 26a9d68a5f8f337fd511e3c16b930a10b1c6349d..110c3582095380f5aedb6b1e8f3f27c841391d8b 100644 (file)
@@ -6009,15 +6009,34 @@ 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;
                        }
+
+                       return 0;
                } else {
                        ast_module_reload(NULL);        /* Reload all modules */
                        astman_send_ack(s, m, "All modules reloaded");