From: Corey Farrell Date: Tue, 2 Oct 2018 06:28:20 +0000 (-0400) Subject: loader: Fix result of module reload error. X-Git-Tag: 15.7.0-rc1~7^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2c43e5bad4376b340103cfa8c27df1ddbda611d1;p=thirdparty%2Fasterisk.git loader: Fix result of module reload error. 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 --- diff --git a/main/loader.c b/main/loader.c index c495d76154..0324b13948 100644 --- a/main/loader.c +++ b/main/loader.c @@ -991,14 +991,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; @@ -1010,6 +1010,8 @@ enum ast_module_reload_result ast_module_reload(const char *name) if (!name || !strcasecmp(name, reload_classes[i].name)) { if (reload_classes[i].reload_fn() == AST_MODULE_LOAD_SUCCESS) { res = AST_MODULE_RELOAD_SUCCESS; + } else if (res == AST_MODULE_RELOAD_NOT_FOUND) { + res = AST_MODULE_RELOAD_ERROR; } } } @@ -1051,6 +1053,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;