]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Do not try to unregister a NULL channel tech.
authorJason Parker <jparker@digium.com>
Wed, 5 Sep 2007 15:14:30 +0000 (15:14 +0000)
committerJason Parker <jparker@digium.com>
Wed, 5 Sep 2007 15:14:30 +0000 (15:14 +0000)
Also changed load_module function to use defines rather than numbers for return values.

Issue 10651, patch by rbraun_proformatique, with additions by me.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@81523 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_phone.c

index 9ef4619a737924e8db941b06b0f8d18b520c2481..ad34d23298b47ad1c2309547e59ab211a3792718 100644 (file)
@@ -1261,7 +1261,8 @@ static int __unload_module(void)
 {
        struct phone_pvt *p, *pl;
        /* First, take us out of the channel loop */
-       ast_channel_unregister(cur_tech);
+       if (cur_tech)
+               ast_channel_unregister(cur_tech);
        if (!ast_mutex_lock(&iflock)) {
                /* Hangup all interfaces if they have an owner */
                p = iflist;
@@ -1334,7 +1335,7 @@ static int load_module(void)
        if (ast_mutex_lock(&iflock)) {
                /* It's a little silly to lock it, but we mind as well just to be sure */
                ast_log(LOG_ERROR, "Unable to lock interface list???\n");
-               return -1;
+               return AST_MODULE_LOAD_FAILURE;
        }
        v = ast_variable_browse(cfg, "interfaces");
        while(v) {
@@ -1350,7 +1351,7 @@ static int load_module(void)
                                        ast_config_destroy(cfg);
                                        ast_mutex_unlock(&iflock);
                                        __unload_module();
-                                       return -1;
+                                       return AST_MODULE_LOAD_FAILURE;
                                }
                } else if (!strcasecmp(v->name, "silencesupression")) {
                        silencesupression = ast_true(v->value);
@@ -1418,12 +1419,12 @@ static int load_module(void)
                ast_log(LOG_ERROR, "Unable to register channel class 'Phone'\n");
                ast_config_destroy(cfg);
                __unload_module();
-               return -1;
+               return AST_MODULE_LOAD_FAILURE;
        }
        ast_config_destroy(cfg);
        /* And start the monitor for the first time */
        restart_monitor();
-       return 0;
+       return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Linux Telephony API Support");