[svn-commits] tilghman: trunk r120602 - in /trunk: apps/ main/ res/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Jun 5 10:58:12 CDT 2008


Author: tilghman
Date: Thu Jun  5 10:58:11 2008
New Revision: 120602

URL: http://svn.digium.com/view/asterisk?view=rev&rev=120602
Log:
Conditionally load the AGI command gosub, depending on whether or not res_agi
has been loaded, fix a return value in the loader, and ensure that the help
workhorse header does not print on load.

Modified:
    trunk/apps/app_stack.c
    trunk/main/loader.c
    trunk/res/res_agi.c

Modified: trunk/apps/app_stack.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_stack.c?view=diff&rev=120602&r1=120601&r2=120602
==============================================================================
--- trunk/apps/app_stack.c (original)
+++ trunk/apps/app_stack.c Thu Jun  5 10:58:11 2008
@@ -36,6 +36,8 @@
 #include "asterisk/channel.h"
 #include "asterisk/agi.h"
 
+static int agi_loaded = 0;
+
 static const char *app_gosub = "Gosub";
 static const char *app_gosubif = "GosubIf";
 static const char *app_return = "Return";
@@ -490,12 +492,15 @@
 {
 	struct ast_context *con;
 
-	if ((con = ast_context_find("app_stack_gosub_virtual_context"))) {
-		ast_context_remove_extension2(con, "s", 1, NULL);
-		ast_context_destroy(con, "app_stack"); /* leave nothing behind */
-	}
-
-	ast_agi_unregister(ast_module_info->self, &gosub_agi_command);
+	if (agi_loaded) {
+		ast_agi_unregister(ast_module_info->self, &gosub_agi_command);
+
+		if ((con = ast_context_find("app_stack_gosub_virtual_context"))) {
+			ast_context_remove_extension2(con, "s", 1, NULL);
+			ast_context_destroy(con, "app_stack"); /* leave nothing behind */
+		}
+	}
+
 	ast_unregister_application(app_return);
 	ast_unregister_application(app_pop);
 	ast_unregister_application(app_gosubif);
@@ -508,19 +513,31 @@
 static int load_module(void)
 {
 	struct ast_context *con;
-	con = ast_context_find_or_create(NULL, NULL, "app_stack_gosub_virtual_context", "app_stack");
-	if (!con) {
-		ast_log(LOG_ERROR, "Virtual context 'app_stack_gosub_virtual_context' does not exist and unable to create\n");
-		return AST_MODULE_LOAD_DECLINE;
+
+	if (!ast_module_check("res_agi.so")) {
+		if (ast_load_resource("res_agi.so") == AST_MODULE_LOAD_SUCCESS) {
+			agi_loaded = 1;
+		}
 	} else {
-		ast_add_extension2(con, 1, "s", 1, NULL, NULL, "KeepAlive", ast_strdup(""), ast_free_ptr, "app_stack");
+		agi_loaded = 1;
+	}
+
+	if (agi_loaded) {
+		con = ast_context_find_or_create(NULL, NULL, "app_stack_gosub_virtual_context", "app_stack");
+		if (!con) {
+			ast_log(LOG_ERROR, "Virtual context 'app_stack_gosub_virtual_context' does not exist and unable to create\n");
+			return AST_MODULE_LOAD_DECLINE;
+		} else {
+			ast_add_extension2(con, 1, "s", 1, NULL, NULL, "KeepAlive", ast_strdup(""), ast_free_ptr, "app_stack");
+		}
+
+		ast_agi_register(ast_module_info->self, &gosub_agi_command);
 	}
 
 	ast_register_application(app_pop, pop_exec, pop_synopsis, pop_descrip);
 	ast_register_application(app_return, return_exec, return_synopsis, return_descrip);
 	ast_register_application(app_gosubif, gosubif_exec, gosubif_synopsis, gosubif_descrip);
 	ast_register_application(app_gosub, gosub_exec, gosub_synopsis, gosub_descrip);
-	ast_agi_register(ast_module_info->self, &gosub_agi_command);
 	ast_custom_function_register(&local_function);
 
 	return 0;

Modified: trunk/main/loader.c
URL: http://svn.digium.com/view/asterisk/trunk/main/loader.c?view=diff&rev=120602&r1=120601&r2=120602
==============================================================================
--- trunk/main/loader.c (original)
+++ trunk/main/loader.c Thu Jun  5 10:58:11 2008
@@ -726,11 +726,12 @@
 
 int ast_load_resource(const char *resource_name)
 {
+	int res;
 	AST_LIST_LOCK(&module_list);
-	load_resource(resource_name, 0);
+	res = load_resource(resource_name, 0);
 	AST_LIST_UNLOCK(&module_list);
 
-	return 0;
+	return res;
 }
 
 struct load_order_entry {

Modified: trunk/res/res_agi.c
URL: http://svn.digium.com/view/asterisk/trunk/res/res_agi.c?view=diff&rev=120602&r1=120601&r2=120602
==============================================================================
--- trunk/res/res_agi.c (original)
+++ trunk/res/res_agi.c Thu Jun  5 10:58:11 2008
@@ -2722,7 +2722,6 @@
 			"       When called with a topic as an argument, displays usage\n"
 			"       information on the given command.  If called without a\n"
 			"       topic, it provides a list of AGI commands.\n";
-		break;
 	case CLI_GENERATE:
 		return NULL;
 	}




More information about the svn-commits mailing list