Merged revisions 198311 via svnmerge from
[asterisk/asterisk.git] / res / res_smdi.c
index cb8cd61..d1d40f0 100644 (file)
@@ -43,6 +43,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/module.h"
 #include "asterisk/lock.h"
 #include "asterisk/utils.h"
+#define AST_API_MODULE
 #include "asterisk/smdi.h"
 #include "asterisk/config.h"
 #include "asterisk/astobj.h"
@@ -305,8 +306,10 @@ static inline void unref_msg(void *msg, enum smdi_message_type type)
        switch (type) {
        case SMDI_MWI:
                ASTOBJ_UNREF(mwi_msg, ast_smdi_mwi_message_destroy);
+               break;
        case SMDI_MD:
                ASTOBJ_UNREF(md_msg, ast_smdi_md_message_destroy);
+               break;
        }
 }
 
@@ -1332,6 +1335,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;
@@ -1349,8 +1354,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_NOTICE, "No SMDI interfaces are available to listen on, not starting SMDI listener.\n");
                return AST_MODULE_LOAD_DECLINE;
        }