From e02f0bda8f0aded4265af583ef25b8da1eca257c Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Thu, 21 Sep 2006 22:12:09 +0000 Subject: [PATCH] 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/branches/1.4@43454 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_mgcp.c | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index 9ae00b837d..6975617843 100644 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.c @@ -4266,34 +4266,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 */