From: Joshua Colp Date: Thu, 21 Sep 2006 22:53:17 +0000 (+0000) Subject: Oh look more changes, but these are my own! (Clean up module load functions) X-Git-Tag: 1.6.0-beta1~3^2~4677 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=323527b4f370abbd21d64c0b80773fe7a27a3873;p=thirdparty%2Fasterisk.git Oh look more changes, but these are my own! (Clean up module load functions) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43461 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index c4d48b096a..6fad93b453 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -9890,8 +9890,7 @@ static int unload_module(void) static int load_module(void) { char *config = "iax.conf"; - int res = 0; - int x; + int x = 0; struct iax2_registry *reg = NULL; struct iax2_peer *peer = NULL; @@ -9915,20 +9914,25 @@ static int load_module(void) for (x=0;x 1) - ast_verbose(VERBOSE_PREFIX_2 "IAX Ready and Listening\n"); - } else { + if (start_network_thread()) { ast_log(LOG_ERROR, "Unable to start network thread\n"); - ast_netsock_release(netsock); - } + __unload_module(); + return AST_MODULE_LOAD_FAILURE; + } else if (option_verbose > 1) + ast_verbose(VERBOSE_PREFIX_2 "IAX Ready and Listening\n"); for (reg = registrations; reg; reg = reg->next) iax2_do_register(reg); + AST_LIST_LOCK(&peers); AST_LIST_TRAVERSE(&peers, peer, entry) { if (peer->sockfd < 0) @@ -9970,9 +9973,11 @@ static int load_module(void) iax2_poke_peer(peer, 0); } AST_LIST_UNLOCK(&peers); + reload_firmware(); iax_provision_reload(); - return res; + + return AST_MODULE_LOAD_SUCCESS; } AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Inter Asterisk eXchange (Ver 2)", diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 291c321c2e..f765cf1b49 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -16714,22 +16714,28 @@ static int load_module(void) ASTOBJ_CONTAINER_INIT(&peerl); /* Peer object list */ ASTOBJ_CONTAINER_INIT(®l); /* Registry object list */ - sched = sched_context_create(); - if (!sched) { - ast_log(LOG_WARNING, "Unable to create schedule context\n"); + if (!(sched = sched_context_create())) { + ast_log(LOG_ERROR, "Unable to create scheduler context\n"); + return AST_MODULE_LOAD_FAILURE; } - io = io_context_create(); - if (!io) { - ast_log(LOG_WARNING, "Unable to create I/O context\n"); + if (!(io = io_context_create())) { + ast_log(LOG_ERROR, "Unable to create I/O context\n"); + sched_context_destroy(sched); + return AST_MODULE_LOAD_FAILURE; } + sip_reloadreason = CHANNEL_MODULE_LOAD; + if(reload_config(sip_reloadreason)) /* Load the configuration from sip.conf */ return AST_MODULE_LOAD_DECLINE; + /* Make sure we can register our sip channel type */ if (ast_channel_register(&sip_tech)) { ast_log(LOG_ERROR, "Unable to register channel type 'SIP'\n"); - return -1; + io_context_destroy(io); + sched_context_destroy(sched); + return AST_MODULE_LOAD_FAILURE; } /* Register all CLI functions for SIP */ @@ -16763,7 +16769,7 @@ static int load_module(void) /* And start the monitor for the first time */ restart_monitor(); - return 0; + return AST_MODULE_LOAD_SUCCESS; } static int unload_module(void)