git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6995 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.2-netsec
Kevin P. Fleming 20 years ago
parent 018e8c8395
commit 608f5f7f45

@ -1,5 +1,7 @@
2005-11-07 Kevin P. Fleming <kpfleming@digium.com>
* apps/app_txtcidname.c: upgrade to new arg/option API and implement priority jumping control
* Makefile: restore function of 'dont-optimize'
* config.c (config_text_file_load): don't generate log message when stat() fails

@ -40,6 +40,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#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 *app = "TXTCIDName";
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 @@ static int txtcidname_exec(struct ast_channel *chan, void *data)
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 @@ static int txtcidname_exec(struct ast_channel *chan, void *data)
}
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 @@ static int txtcidname_exec(struct ast_channel *chan, void *data)
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;

Loading…
Cancel
Save