[Asterisk-cvs] asterisk/apps app_txtcidname.c,1.23,1.24

kpfleming kpfleming
Mon Nov 7 17:50:52 CST 2005


Update of /usr/cvsroot/asterisk/apps
In directory mongoose.digium.com:/tmp/cvs-serv13289/apps

Modified Files:
	app_txtcidname.c 
Log Message:
issue #5647


Index: app_txtcidname.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_txtcidname.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- app_txtcidname.c	6 Nov 2005 15:09:46 -0000	1.23
+++ app_txtcidname.c	7 Nov 2005 22:41:58 -0000	1.24
@@ -40,6 +40,7 @@
 #include "asterisk/module.h"
 #include "asterisk/enum.h"
 #include "asterisk/utils.h"
+#include "asterisk/app.h"
 
 STANDARD_LOCAL_USER;
 
@@ -52,9 +53,14 @@
 static char *synopsis = "Lookup caller name from TXT record";
 
 static char *descrip = 
-"  TXTCIDName(<CallerIDNumber>):  Looks up a Caller Name via DNS and sets\n"
+"  TXTCIDName(<CallerIDNumber>[|options]):  Looks up a Caller Name via DNS and sets\n"
 "the variable 'TXTCIDNAME'. TXTCIDName will either be blank\n"
-"or return the value found in the TXT record in DNS.\n" ;
+"or return the value found in the TXT record in DNS.\n" 
+"The option string may contain the following character:\n"
+"'j' -- jump to n+101 priority if the lookup fails\n"
+"This application sets the following channel variable upon completion:\n"
+"  TXTCIDNAMESTATUS The status of the lookup as a text string, one of\n"
+"      SUCCESS | FAILED\n";
 
 static int txtcidname_exec(struct ast_channel *chan, void *data)
 {
@@ -64,6 +70,12 @@
 	char dest[80];
 	struct localuser *u;
 	static int dep_warning = 0;
+	char *parse = NULL;
+	int priority_jump = 0;
+	AST_DECLARE_APP_ARGS(args,
+		AST_APP_ARG(cidnum);
+		AST_APP_ARG(options);
+	);
 
 	LOCAL_USER_ADD(u);
 	
@@ -73,8 +85,23 @@
 	}
 	
 	if (ast_strlen_zero(data)) {
-		ast_log(LOG_WARNING, "TXTCIDName requires an argument (extension)\n");
-		res = 1;
+		ast_log(LOG_WARNING, "TXTCIDName requires an argument (extension[|options])\n");
+		LOCAL_USER_REMOVE(u);
+		return(0);
+	}
+
+	parse = ast_strdupa(data);
+	if (!parse) {
+		ast_log(LOG_ERROR, "Out of memory!\n");
+		LOCAL_USER_REMOVE(u);
+		return -1;
+	}
+
+	AST_STANDARD_APP_ARGS(args,parse);
+
+	if (args.options) {
+		if (strchr(args.options, 'j'))
+			priority_jump = 1;
 	}
 	
 	if (!res) {
@@ -85,13 +112,16 @@
 	if (res > 0) {
 		if (!ast_strlen_zero(txt)) {
 			pbx_builtin_setvar_helper(chan, "TXTCIDNAME", txt);
+			pbx_builtin_setvar_helper(chan, "TXTCIDNAMESTATUS", "SUCCESS");
 			if (option_debug > 1)
 				ast_log(LOG_DEBUG, "TXTCIDNAME got '%s'\n", txt);
 		}
 	}
 	if (!res) {
 		/* Look for a "busy" place */
-		ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
+		if (priority_jump || option_priority_jumping)
+			ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
+		pbx_builtin_setvar_helper(chan, "TXTCIDNAMESTATUS", "FAILED");
 	} else if (res > 0)
 		res = 0;
 




More information about the svn-commits mailing list