loader: Fix result of module reload error.
authorCorey Farrell <git@cfware.com>
Tue, 2 Oct 2018 06:33:44 +0000 (02:33 -0400)
committerCorey Farrell <git@cfware.com>
Tue, 2 Oct 2018 18:12:58 +0000 (14:12 -0400)
When a module reload fails we never set AST_MODULE_RELOAD_ERROR.  This
caused reload failures to incorrectly report 'No module found'.

Change-Id: I5f3953e0f7d135e53ec797f24c97ee3f73f232e7

main/loader.c

index eb345b5..ce73d96 100644 (file)
@@ -1350,14 +1350,14 @@ enum ast_module_reload_result ast_module_reload(const char *name)
 
        if (ast_opt_lock_confdir) {
                int try;
-               int res;
-               for (try = 1, res = AST_LOCK_TIMEOUT; try < 6 && (res == AST_LOCK_TIMEOUT); try++) {
-                       res = ast_lock_path(ast_config_AST_CONFIG_DIR);
-                       if (res == AST_LOCK_TIMEOUT) {
+               int lockres;
+               for (try = 1, lockres = AST_LOCK_TIMEOUT; try < 6 && (lockres == AST_LOCK_TIMEOUT); try++) {
+                       lockres = ast_lock_path(ast_config_AST_CONFIG_DIR);
+                       if (lockres == AST_LOCK_TIMEOUT) {
                                ast_log(LOG_WARNING, "Failed to grab lock on %s, try %d\n", ast_config_AST_CONFIG_DIR, try);
                        }
                }
-               if (res != AST_LOCK_SUCCESS) {
+               if (lockres != AST_LOCK_SUCCESS) {
                        ast_log(AST_LOG_WARNING, "Cannot grab lock on %s\n", ast_config_AST_CONFIG_DIR);
                        res = AST_MODULE_RELOAD_ERROR;
                        goto module_reload_done;
@@ -1394,6 +1394,8 @@ enum ast_module_reload_result ast_module_reload(const char *name)
                ast_verb(3, "Reloading module '%s' (%s)\n", cur->resource, info->description);
                if (info->reload() == AST_MODULE_LOAD_SUCCESS) {
                        res = AST_MODULE_RELOAD_SUCCESS;
+               } else if (res == AST_MODULE_RELOAD_NOT_FOUND) {
+                       res = AST_MODULE_RELOAD_ERROR;
                }
                if (name) {
                        break;