From: George Joseph Date: Wed, 22 Apr 2015 21:22:10 +0000 (-0600) Subject: res_corosync: Add check for config file before calling corosync apis X-Git-Tag: 13.4.0-rc1~93 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1474bb05f64c2b1db4417667a4d27576dbe219a7;p=thirdparty%2Fasterisk.git 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 --- diff --git a/res/res_corosync.c b/res/res_corosync.c index 58290c7ccf..e2b0596d1e 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;