]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res/res_corosync: Always decline module load, instead of failing 48/748/1
authorGeorge Joseph <george.joseph@fairview5.com>
Wed, 22 Apr 2015 21:22:10 +0000 (15:22 -0600)
committerMatt Jordan <mjordan@digium.com>
Tue, 30 Jun 2015 02:03:33 +0000 (21:03 -0500)
Returns a 'failure' from the module load routine indicates to Asterisk
that it should abort loading completely. This is rarely - in fact,
really, never - a good option. Aborting load of Asterisk from a dynamic
module implies that the core, and the rest of the dynamic modules, don't
matter: we should abandon all processing.

res_corosync is really not that important.

This patch updates the module such that, if it fails to load, it
politely declines (emitting ERROR messages along the way), and allows
Asterisk to continue to function.

Note that this issue was keeping Asterisk unit tests from running on
certain build agents.

Change-Id: I252249e81fb9b1a68e0da873f54f47e21d648f0f

res/res_corosync.c

index 58290c7ccf3d00cbe2ec11b79c9c9f9692a1376b..72da3f129d951aacac0f598121ab57b10bd29c6e 100644 (file)
@@ -863,7 +863,6 @@ static void cleanup_module(void)
 static int load_module(void)
 {
        cs_error_t cs_err;
-       enum ast_module_load_result res = AST_MODULE_LOAD_FAILURE;
        struct cpg_name name;
 
        corosync_aggregate_topic = stasis_topic_create("corosync_aggregate_topic");
@@ -883,6 +882,11 @@ static int load_module(void)
                goto failed;
        }
 
+       if (load_config(0)) {
+               /* simply not configured is not a fatal error */
+               goto failed;
+       }
+
        if ((cs_err = corosync_cfg_initialize(&cfg_handle, &cfg_callbacks)) != CS_OK) {
                ast_log(LOG_ERROR, "Failed to initialize cfg: (%d)\n", (int) cs_err);
                goto failed;
@@ -913,12 +917,6 @@ static int load_module(void)
                goto failed;
        }
 
-       if (load_config(0)) {
-               /* simply not configured is not a fatal error */
-               res = AST_MODULE_LOAD_DECLINE;
-               goto failed;
-       }
-
        ast_cli_register_multiple(corosync_cli, ARRAY_LEN(corosync_cli));
 
        return AST_MODULE_LOAD_SUCCESS;
@@ -926,7 +924,7 @@ static int load_module(void)
 failed:
        cleanup_module();
 
-       return res;
+       return AST_MODULE_LOAD_DECLINE;
 }
 
 static int unload_module(void)