aboutsummaryrefslogtreecommitdiffstats
path: root/pbx
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2009-08-25 06:52:44 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2009-08-25 06:52:44 +0000
commitd01800244899c32e879d0c3f4412a226aa83e4dd (patch)
tree446dd766cb5252a225cdc98a5ecaa92a8b8f8f0d /pbx
parent64480d66c729bc8b2b5a7408a5783654bed5a489 (diff)
Merged revisions 213975 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r213975 | tilghman | 2009-08-25 01:51:12 -0500 (Tue, 25 Aug 2009) | 6 lines DUNDILOOKUP function in 1.6 should use comma delimiters. (closes issue #15322) Reported by: chappell Patches: dundilookup-0015322.patch uploaded by chappell (license 8) ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@213976 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-rw-r--r--pbx/pbx_dundi.c51
1 files changed, 26 insertions, 25 deletions
diff --git a/pbx/pbx_dundi.c b/pbx/pbx_dundi.c
index d8014a283..2428d5b28 100644
--- a/pbx/pbx_dundi.c
+++ b/pbx/pbx_dundi.c
@@ -3898,15 +3898,27 @@ int dundi_query_eid(struct dundi_entity_info *dei, const char *dcontext, dundi_e
return dundi_query_eid_internal(dei, dcontext, &eid, &hmd, dundi_ttl, 0, avoid);
}
+enum {
+ OPT_BYPASS_CACHE = (1 << 0),
+};
+
+AST_APP_OPTIONS(dundi_query_opts, BEGIN_OPTIONS
+ AST_APP_OPTION('b', OPT_BYPASS_CACHE),
+END_OPTIONS );
+
static int dundifunc_read(struct ast_channel *chan, const char *cmd, char *num, char *buf, size_t len)
{
- char *context;
- char *opts;
int results;
int x;
- int bypass = 0;
struct ast_module_user *u;
struct dundi_result dr[MAX_RESULTS];
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(number);
+ AST_APP_ARG(context);
+ AST_APP_ARG(options);
+ );
+ char *parse;
+ struct ast_flags opts = { 0, };
buf[0] = '\0';
@@ -3917,21 +3929,18 @@ static int dundifunc_read(struct ast_channel *chan, const char *cmd, char *num,
u = ast_module_user_add(chan);
- context = strchr(num, '|');
- if (context) {
- *context++ = '\0';
- opts = strchr(context, '|');
- if (opts) {
- *opts++ = '\0';
- if (strchr(opts, 'b'))
- bypass = 1;
- }
+ parse = ast_strdupa(num);
+
+ AST_STANDARD_APP_ARGS(args, parse);
+
+ if (!ast_strlen_zero(args.options)) {
+ ast_app_parse_options(dundi_query_opts, &opts, NULL, args.options);
+ }
+ if (ast_strlen_zero(args.context)) {
+ args.context = "e164";
}
- if (ast_strlen_zero(context))
- context = "e164";
-
- results = dundi_lookup(dr, MAX_RESULTS, NULL, context, num, bypass);
+ results = dundi_lookup(dr, MAX_RESULTS, NULL, args.context, args.number, ast_test_flag(&opts, OPT_BYPASS_CACHE));
if (results > 0) {
sort_results(dr, results);
for (x = 0; x < results; x++) {
@@ -3954,7 +3963,7 @@ static int dundifunc_read(struct ast_channel *chan, const char *cmd, char *num,
static struct ast_custom_function dundi_function = {
.name = "DUNDILOOKUP",
.synopsis = "Do a DUNDi lookup of a phone number.",
- .syntax = "DUNDILOOKUP(number[|context[|options]])",
+ .syntax = "DUNDILOOKUP(number[,context[,options]])",
.desc = "This will do a DUNDi lookup of the given phone number.\n"
"If no context is given, the default will be e164. The result of\n"
"this function will return the Technology/Resource found in the first result\n"
@@ -3964,14 +3973,6 @@ static struct ast_custom_function dundi_function = {
.read = dundifunc_read,
};
-enum {
- OPT_BYPASS_CACHE = (1 << 0),
-};
-
-AST_APP_OPTIONS(dundi_query_opts, BEGIN_OPTIONS
- AST_APP_OPTION('b', OPT_BYPASS_CACHE),
-END_OPTIONS );
-
unsigned int dundi_result_id;
struct dundi_result_datastore {