summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2007-02-03 20:46:36 +0000
committerRussell Bryant <russell@russellbryant.com>2007-02-03 20:46:36 +0000
commitce321f87e9da1374dc86b9a360df0bdf3460f4fb (patch)
tree0062823357f212469e864817e7979de248de15f5
parent3e5e0f5f00fea7f70951ac8999380be76b80dc5b (diff)
Merged revisions 53136 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r53136 | russell | 2007-02-03 14:44:20 -0600 (Sat, 03 Feb 2007) | 12 lines Merged revisions 53133 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r53133 | russell | 2007-02-03 14:38:13 -0600 (Sat, 03 Feb 2007) | 4 lines set the DIALSTATUS variable to contain "INVALIDARGS" when the dial application exits early because of invalid arguments instead of just leaving it empty. (issue #8975) ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@53137 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--apps/app_dial.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c
index 7f731bcfd..4e4674e07 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -82,7 +82,7 @@ static char *descrip =
" ANSWEREDTIME - This is the amount of time for actual call.\n"
" DIALSTATUS - This is the status of the call:\n"
" CHANUNAVAIL | CONGESTION | NOANSWER | BUSY | ANSWER | CANCEL\n"
-" DONTCALL | TORTURE\n"
+" DONTCALL | TORTURE | INVALIDARGS\n"
" For the Privacy and Screening Modes, the DIALSTATUS variable will be set to\n"
"DONTCALL if the called party chooses to send the calling party to the 'Go Away'\n"
"script. The DIALSTATUS variable will be set to TORTURE if the called party\n"
@@ -1183,6 +1183,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
struct privacy_args pa = {
.sentringing = 0,
.privdb_val = 0,
+ .status = "INVALIDARGS",
};
int sentringing = 0, moh = 0;
const char *outbound_group = NULL;
@@ -1201,23 +1202,27 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
if (ast_strlen_zero(data)) {
ast_log(LOG_WARNING, "Dial requires an argument (technology/number)\n");
+ pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status);
return -1;
}
u = ast_module_user_add(chan); /* XXX is this the right place ? */
parse = ast_strdupa(data);
-
+
AST_STANDARD_APP_ARGS(args, parse);
memset(&config,0,sizeof(struct ast_bridge_config));
if (!ast_strlen_zero(args.options) &&
- ast_app_parse_options(dial_exec_options, &opts, opt_args, args.options))
+ ast_app_parse_options(dial_exec_options, &opts, opt_args, args.options)) {
+ pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status);
goto done;
+ }
if (ast_strlen_zero(args.peers)) {
ast_log(LOG_WARNING, "Dial requires an argument (technology/number)\n");
+ pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status);
goto done;
}
@@ -1231,6 +1236,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
calldurationlimit = atoi(opt_args[OPT_ARG_DURATION_STOP]);
if (!calldurationlimit) {
ast_log(LOG_WARNING, "Dial does not accept S(%s), hanging up.\n", opt_args[OPT_ARG_DURATION_STOP]);
+ pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status);
goto done;
}
if (option_verbose > 2)