From c3dd782f95f809da02da9a4c2b663264136fef33 Mon Sep 17 00:00:00 2001 From: tilghman Date: Mon, 18 May 2009 20:24:13 +0000 Subject: Add a similar dependency on SMDI for voicemail as already exists for ADSI. (closes issue #14846) Reported by: pj Patches: 20090413__bug14846__1.4.diff.txt uploaded by tilghman (license 14) 20090507__issue14846__1.6.0.diff.txt uploaded by tilghman (license 14) 20090507__issue14846__1.6.1.diff.txt uploaded by tilghman (license 14) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@195366 f38db490-d61c-443f-a65b-d21fe96a405b --- apps/app_voicemail.c | 13 +++++++++++++ res/res_smdi.c | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index f3e423ec1..0509559bb 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -8862,7 +8862,10 @@ static int load_module(void) { int res; char *adsi_loaded = ast_module_helper("", "res_adsi.so", 0, 0, 0, 0); + char *smdi_loaded = ast_module_helper("", "res_smdi.so", 0, 0, 0, 0); free(adsi_loaded); + free(smdi_loaded); + if (!adsi_loaded) { /* If embedded, res_adsi may be known as "res_adsi" not "res_adsi.so" */ adsi_loaded = ast_module_helper("", "res_adsi", 0, 0, 0, 0); @@ -8873,6 +8876,16 @@ static int load_module(void) } } + if (!smdi_loaded) { + /* If embedded, res_smdi may be known as "res_smdi" not "res_smdi.so" */ + smdi_loaded = ast_module_helper("", "res_smdi", 0, 0, 0, 0); + ast_free(smdi_loaded); + if (!smdi_loaded) { + ast_log(LOG_ERROR, "app_voicemail.so depends upon res_smdi.so\n"); + return AST_MODULE_LOAD_DECLINE; + } + } + my_umask = umask(0); umask(my_umask); res = ast_register_application(app, vm_exec, synopsis_vm, descrip_vm); diff --git a/res/res_smdi.c b/res/res_smdi.c index e3da188c9..4c9427720 100644 --- a/res/res_smdi.c +++ b/res/res_smdi.c @@ -1337,6 +1337,8 @@ static struct ast_custom_function smdi_msg_function = { .read = smdi_msg_read, }; +static int unload_module(void); + static int load_module(void) { int res; @@ -1354,8 +1356,10 @@ static int load_module(void) /* load the config and start the listener threads*/ res = smdi_load(0); if (res < 0) { + unload_module(); return res; } else if (res == 1) { + unload_module(); ast_log(LOG_WARNING, "No SMDI interfaces are available to listen on, not starting SMDI listener.\n"); return AST_MODULE_LOAD_DECLINE; } -- cgit v1.2.3