[svn-commits] pcadach: branch pcadach/chan_h323-live r40774 - /team/pcadach/chan_h323-live/...

svn-commits at lists.digium.com svn-commits at lists.digium.com
Mon Aug 21 09:39:35 MST 2006


Author: pcadach
Date: Mon Aug 21 11:39:35 2006
New Revision: 40774

URL: http://svn.digium.com/view/asterisk?rev=40774&view=rev
Log:
Let chan_h323 builds again after heavy re-work of module subsystem

Modified:
    team/pcadach/chan_h323-live/channels/Makefile
    team/pcadach/chan_h323-live/channels/chan_h323.c

Modified: team/pcadach/chan_h323-live/channels/Makefile
URL: http://svn.digium.com/view/asterisk/team/pcadach/chan_h323-live/channels/Makefile?rev=40774&r1=40773&r2=40774&view=diff
==============================================================================
--- team/pcadach/chan_h323-live/channels/Makefile (original)
+++ team/pcadach/chan_h323-live/channels/Makefile Mon Aug 21 11:39:35 2006
@@ -95,11 +95,11 @@
 chan_alsa.o: busy.h ringtone.h
 
 ifeq ($(OSARCH),linux-gnu)
-chan_h323.so: chan_h323.o h323_module_interface.so h323/libchanh323.a h323/Makefile.ast
+chan_h323.so: chan_h323.o h323/libchanh323.a h323/Makefile.ast
 	$(ECHO_PREFIX) echo "   [LD] $^ -> $@"
 	$(CMD_PREFIX) $(CC) $(SOLINK) $(H323LDFLAGS) -o $@ $< h323/libchanh323.a $(H323LDLIBS) -lstdc++
 else
-chan_h323.so: chan_h323.o h323_module_interface.so h323/libchanh323.a
+chan_h323.so: chan_h323.o h323/libchanh323.a
 	$(ECHO_PREFIX) echo "   [LD] $^ -> $@"
 	$(CMD_PREFIX) $(CC) $(SOLINK) -o $@ $< h323/libchanh323.a $(CHANH323LIB) -L$(PWLIBDIR)/lib $(PTLIB) -L$(OPENH323DIR)/lib $(H323LIB) -L/usr/lib -lcrypto -lssl -lexpat
 endif

Modified: team/pcadach/chan_h323-live/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/team/pcadach/chan_h323-live/channels/chan_h323.c?rev=40774&r1=40773&r2=40774&view=diff
==============================================================================
--- team/pcadach/chan_h323-live/channels/chan_h323.c (original)
+++ team/pcadach/chan_h323-live/channels/chan_h323.c Mon Aug 21 11:39:35 2006
@@ -130,7 +130,7 @@
 static struct ast_jb_conf global_jbconf;
 
 /** Variables required by Asterisk */
-static const char desc[] = "The NuFone Network's Open H.323 Channel Driver";
+static const char tdesc[] = "The NuFone Network's Open H.323 Channel Driver";
 static const char config[] = "h323.conf";
 static char default_context[AST_MAX_CONTEXT] = "default";
 static struct sockaddr_in bindaddr;
@@ -149,6 +149,7 @@
 static int tos = 0;
 static char secret[50];
 static unsigned int unique = 0;
+static int usecnt = 0;
 
 static call_options_t global_options;
 
@@ -571,7 +572,7 @@
 
 	/* Update usage counter */
 	ast_mutex_unlock(&pvt->lock);
-	ast_atomic_fetchadd_int(&__mod_desc->usecnt, -1);
+	ast_atomic_fetchadd_int(&usecnt, -1);
 	ast_update_use_count();
 	return 0;
 }
@@ -775,7 +776,7 @@
 	ast_mutex_unlock(&pvt->lock);
 	ch = ast_channel_alloc(1);
 	/* Update usage counter */
-	ast_atomic_fetchadd_int(&__mod_desc->usecnt, +1);
+	ast_atomic_fetchadd_int(&usecnt, +1);
 	ast_update_use_count();
 	ast_mutex_lock(&pvt->lock);
 	if (ch) {
@@ -2334,7 +2335,7 @@
 	return 0;
 }
 
-static int reload(void *mod)
+static int reload(void)
 {
 	return h323_reload(0, 0, NULL);
 }
@@ -2413,7 +2414,7 @@
 	.set_rtp_peer=  oh323_set_rtp_peer,
 };
 
-static int load_module(void *mod)
+static enum ast_module_load_result load_module(void)
 {
 	int res;
 	ast_mutex_init(&userl.lock);
@@ -2423,24 +2424,32 @@
 	sched = sched_context_create();
 	if (!sched) {
 		ast_log(LOG_WARNING, "Unable to create schedule context\n");
-		return -1;
+		return AST_MODULE_LOAD_FAILURE;
 	}
 	io = io_context_create();
 	if (!io) {
 		ast_log(LOG_WARNING, "Unable to create I/O context\n");
-		return -1;
+		return AST_MODULE_LOAD_FAILURE;
 	}
 	ast_cli_register(&cli_h323_reload);
 	res = reload_config();
 	if (res) {
-		return 0;
+		return AST_MODULE_LOAD_DECLINE;
 	} else {
 		/* Make sure we can register our channel type */
 		if (ast_channel_register(&oh323_tech)) {
 			ast_log(LOG_ERROR, "Unable to register channel class 'H323'\n");
 			ast_cli_unregister(&cli_h323_reload);
 			h323_end_process();
-			return -1;
+			io_context_destroy(io);
+			sched_context_destroy(sched);
+			delete_users();
+			delete_aliases();
+			prune_peers();
+			ast_mutex_destroy(&aliasl.lock);
+			ast_mutex_destroy(&userl.lock);
+			ast_mutex_destroy(&peerl.lock);
+			return AST_MODULE_LOAD_FAILURE;
 		}
 		ast_cli_register_multiple(h323_cli, sizeof(h323_cli) / sizeof(h323_cli[0]));
 
@@ -2464,16 +2473,26 @@
 		/* start the h.323 listener */
 		if (h323_start_listener(h323_signalling_port, bindaddr)) {
 			ast_log(LOG_ERROR, "Unable to create H323 listener.\n");
+			ast_rtp_proto_unregister(&oh323_rtp);
 			ast_cli_unregister_multiple(h323_cli, sizeof(h323_cli) / sizeof(h323_cli[0]));
 			ast_cli_unregister(&cli_h323_reload);
-			return -1;
+			h323_end_process();
+			io_context_destroy(io);
+			sched_context_destroy(sched);
+			delete_users();
+			delete_aliases();
+			prune_peers();
+			ast_mutex_destroy(&aliasl.lock);
+			ast_mutex_destroy(&userl.lock);
+			ast_mutex_destroy(&peerl.lock);
+			return AST_MODULE_LOAD_FAILURE;
 		}
 		/* Possibly register with a GK */
 		if (!gatekeeper_disable) {
 			if (h323_set_gk(gatekeeper_discover, gatekeeper, secret)) {
 				ast_log(LOG_ERROR, "Gatekeeper registration failed.\n");
 				gatekeeper_disable = 1;
-				return 0;
+				return AST_MODULE_LOAD_SUCCESS;
 			}
 		}
 		/* And start the monitor for the first time */
@@ -2482,7 +2501,7 @@
 	return res;
 }
 
-static int unload_module(void *mod)
+static int unload_module(void)
 {
 	struct oh323_pvt *p, *pl;
 
@@ -2556,4 +2575,4 @@
 		.load = load_module,
 		.unload = unload_module,
 		.reload = reload,
-               );
+);



More information about the svn-commits mailing list