mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-18 18:58:22 +00:00
issue #5647
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6995 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user