summaryrefslogtreecommitdiff
path: root/res/res_corosync.c
diff options
context:
space:
mode:
authorGeorge Joseph <george.joseph@fairview5.com>2015-04-22 15:22:10 -0600
committerMatt Jordan <mjordan@digium.com>2015-04-23 06:30:11 -0500
commit1474bb05f64c2b1db4417667a4d27576dbe219a7 (patch)
tree7eb67ce76ac01f1fe8624bb15883faf2fa7d3dc8 /res/res_corosync.c
parentb0e929219b40f134a925d68dbd764910e3389f3e (diff)
res_corosync: Add check for config file before calling corosync apis
On some systems, res_corosync isn't compatible with the installed version of corosync so corosync_cfg_initialize fails, load_module returns LOAD_FAILURE, and Asterisk terminates. The work around has been to remember to add res_corosync as a noload in modules.conf. A better solution though is to have res_corosync check for its config file before attempting to call corosync apis and return LOAD_DECLINE if there's no config file. This lets Asterisk loading continue. If you have a res_corosync.conf file and res_corosync fails, you get the same behavior as today and the fatal error tells you something is wrong with the install. ASTERISK-24998 Change-Id: Iaf94a9431a4922ec4ec994003f02135acfdd3889
Diffstat (limited to 'res/res_corosync.c')
-rw-r--r--res/res_corosync.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/res/res_corosync.c b/res/res_corosync.c
index 58290c7cc..e2b0596d1 100644
--- a/res/res_corosync.c
+++ b/res/res_corosync.c
@@ -883,6 +883,12 @@ 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;
+ }
+
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 +919,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;