diff options
Diffstat (limited to 'codecs/codec_g722.c')
-rw-r--r-- | codecs/codec_g722.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/codecs/codec_g722.c b/codecs/codec_g722.c index b2b760912..00e36fb33 100644 --- a/codecs/codec_g722.c +++ b/codecs/codec_g722.c @@ -164,14 +164,16 @@ static struct ast_translator lintog722 = { .buf_size = BUFFER_SAMPLES, }; -static void parse_config(int reload) +static int parse_config(int reload) { struct ast_variable *var; struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 }; struct ast_config *cfg = ast_config_load("codecs.conf", config_flags); - if (cfg == NULL || cfg == CONFIG_STATUS_FILEUNCHANGED) - return; + if (cfg == NULL) + return -1; + if (cfg == CONFIG_STATUS_FILEUNCHANGED) + return 0; for (var = ast_variable_browse(cfg, "plc"); var; var = var->next) { if (!strcasecmp(var->name, "genericplc")) { g722tolin.useplc = ast_true(var->value) ? 1 : 0; @@ -180,13 +182,14 @@ static void parse_config(int reload) } } ast_config_destroy(cfg); + return 0; } static int reload(void) { - parse_config(1); - - return 0; + if (parse_config(1)) + return AST_MODULE_LOAD_DECLINE; + return AST_MODULE_LOAD_SUCCESS; } static int unload_module(void) @@ -204,15 +207,18 @@ static int load_module(void) int res = 0; - parse_config(0); + if (parse_config(0)) + return AST_MODULE_LOAD_DECLINE; res |= ast_register_translator(&g722tolin); res |= ast_register_translator(&lintog722); - if (res) + if (res) { unload_module(); + return AST_MODULE_LOAD_FAILURE; + } - return res; + return AST_MODULE_LOAD_SUCCESS; } AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "ITU G.722-64kbps G722 Transcoder", |