Merged revisions 43454 via svnmerge from
authorJoshua Colp <jcolp@digium.com>
Thu, 21 Sep 2006 22:14:31 +0000 (22:14 +0000)
committerJoshua Colp <jcolp@digium.com>
Thu, 21 Sep 2006 22:14:31 +0000 (22:14 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r43454 | file | 2006-09-21 18:12:09 -0400 (Thu, 21 Sep 2006) | 2 lines

Clean up chan_mgcp's module load function (issue #8001 reported by Mithraen with mods by moi)

........

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

channels/chan_mgcp.c

index 8e7d108..6694660 100644 (file)
@@ -4242,34 +4242,35 @@ static int reload_config(void)
 /*! \brief  load_module: PBX load module - initialization ---*/
 static int load_module(void)
 {
-       int res;
-
-       sched = sched_context_create();
-       if (!sched) {
+       if (!(sched = sched_context_create())) {
                ast_log(LOG_WARNING, "Unable to create schedule context\n");
-               return -1;
+               return AST_MODULE_LOAD_FAILURE;
        }
-       io = io_context_create();
-       if (!io) {
+
+       if (!(io = io_context_create())) {
                ast_log(LOG_WARNING, "Unable to create I/O context\n");
-               return -1;
+               sched_context_destroy(sched);
+               return AST_MODULE_LOAD_FAILURE;
        }
 
-       if (!(res = reload_config())) {
-               /* Make sure we can register our mgcp channel type */
-               if (ast_channel_register(&mgcp_tech)) {
-                       ast_log(LOG_ERROR, "Unable to register channel class 'MGCP'\n");
-                       return -1;
-               }
-               ast_rtp_proto_register(&mgcp_rtp);
-               ast_cli_register_multiple(cli_mgcp, sizeof(cli_mgcp) / sizeof(struct ast_cli_entry));
-
-               /* And start the monitor for the first time */
-               restart_monitor();
-       } else
+       if (reload_config())
                return AST_MODULE_LOAD_DECLINE;
 
-       return res;
+       /* Make sure we can register our mgcp channel type */
+       if (ast_channel_register(&mgcp_tech)) {
+               ast_log(LOG_ERROR, "Unable to register channel class 'MGCP'\n");
+               io_context_destroy(io);
+               sched_context_destroy(sched);
+               return AST_MODULE_LOAD_FAILURE;
+       }
+
+       ast_rtp_proto_register(&mgcp_rtp);
+       ast_cli_register_multiple(cli_mgcp, sizeof(cli_mgcp) / sizeof(struct ast_cli_entry));
+       
+       /* And start the monitor for the first time */
+       restart_monitor();
+
+       return AST_MODULE_LOAD_SUCCESS;
 }
 
 /*! \brief  mgcp_do_reload: Reload module */