aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2010-05-12 16:29:04 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2010-05-12 16:29:04 +0000
commitc710d892eeb717aa2cc4ec6d9294e90b7f72767a (patch)
treecccaebb0a017f2dafa4bb5c00a38fd7a3b427c09
parentfac09559c89362c51d5087566636f51f6c00adbf (diff)
Merged revisions 262656 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r262656 | tilghman | 2010-05-12 11:23:26 -0500 (Wed, 12 May 2010) | 8 lines Ensure the arguments are initialized. Also miscellaneous CG cleanup. (closes issue #16576) Reported by: uxbod Patches: 20100505__issue16576.diff.txt uploaded by tilghman (license 14) Tested by: uxbod ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@262658 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--apps/app_privacy.c69
1 files changed, 39 insertions, 30 deletions
diff --git a/apps/app_privacy.c b/apps/app_privacy.c
index 78f53aa4f..857844663 100644
--- a/apps/app_privacy.c
+++ b/apps/app_privacy.c
@@ -21,7 +21,7 @@
* \brief Block all calls without Caller*ID, require phone # to be entered
*
* \author Mark Spencer <markster@digium.com>
- *
+ *
* \ingroup applications
*/
@@ -82,48 +82,55 @@ static int privacy_exec (struct ast_channel *chan, void *data)
} else {
/*Answer the channel if it is not already*/
if (chan->_state != AST_STATE_UP) {
- if ((res = ast_answer(chan)))
+ if ((res = ast_answer(chan))) {
return -1;
+ }
}
- if (!ast_strlen_zero(data)) {
- parse = ast_strdupa(data);
-
- AST_STANDARD_APP_ARGS(args, parse);
+ parse = ast_strdupa(S_OR(data, ""));
- if (args.maxretries) {
- if (sscanf(args.maxretries, "%30d", &x) == 1)
- maxretries = x;
- else
- ast_log(LOG_WARNING, "Invalid max retries argument\n");
+ AST_STANDARD_APP_ARGS(args, parse);
+
+ if (!ast_strlen_zero(args.maxretries)) {
+ if (sscanf(args.maxretries, "%30d", &x) == 1 && x > 0) {
+ maxretries = x;
+ } else {
+ ast_log(LOG_WARNING, "Invalid max retries argument: '%s'\n", args.maxretries);
}
- if (args.minlength) {
- if (sscanf(args.minlength, "%30d", &x) == 1)
- minlength = x;
- else
- ast_log(LOG_WARNING, "Invalid min length argument\n");
+ }
+ if (!ast_strlen_zero(args.minlength)) {
+ if (sscanf(args.minlength, "%30d", &x) == 1 && x > 0) {
+ minlength = x;
+ } else {
+ ast_log(LOG_WARNING, "Invalid min length argument: '%s'\n", args.minlength);
}
- }
+ }
/* Play unidentified call */
res = ast_safe_sleep(chan, 1000);
- if (!res)
+ if (!res) {
res = ast_streamfile(chan, "privacy-unident", chan->language);
- if (!res)
+ }
+ if (!res) {
res = ast_waitstream(chan, "");
+ }
/* Ask for 10 digit number, give 3 attempts */
for (retries = 0; retries < maxretries; retries++) {
- if (!res)
+ if (!res) {
res = ast_streamfile(chan, "privacy-prompt", chan->language);
- if (!res)
+ }
+ if (!res) {
res = ast_waitstream(chan, "");
+ }
- if (!res )
+ if (!res) {
res = ast_readstring(chan, phone, sizeof(phone) - 1, /* digit timeout ms */ 3200, /* first digit timeout */ 5000, "#");
+ }
- if (res < 0)
+ if (res < 0) {
break;
+ }
/* Make sure we get at least digits */
if (strlen(phone) >= minlength ) {
@@ -142,25 +149,27 @@ static int privacy_exec (struct ast_channel *chan, void *data)
}
} else {
res = ast_streamfile(chan, "privacy-incorrect", chan->language);
- if (!res)
+ if (!res) {
res = ast_waitstream(chan, "");
+ }
}
}
-
+
/* Got a number, play sounds and send them on their way */
- if ((retries < maxretries) && res >= 0 ) {
+ if ((retries < maxretries) && res >= 0) {
res = ast_streamfile(chan, "privacy-thankyou", chan->language);
- if (!res)
+ if (!res) {
res = ast_waitstream(chan, "");
+ }
- ast_set_callerid (chan, phone, "Privacy Manager", NULL);
+ ast_set_callerid(chan, phone, "Privacy Manager", NULL);
/* Clear the unavailable presence bit so if it came in on PRI
* the caller id will now be passed out to other channels
*/
chan->cid.cid_pres &= (AST_PRES_UNAVAILABLE ^ 0xFF);
- ast_verb(3, "Changed Caller*ID to %s, callerpres to %d\n",phone,chan->cid.cid_pres);
+ ast_verb(3, "Changed Caller*ID to '%s', callerpres to %d\n", phone, chan->cid.cid_pres);
pbx_builtin_setvar_helper(chan, "PRIVACYMGRSTATUS", "SUCCESS");
} else {
@@ -173,7 +182,7 @@ static int privacy_exec (struct ast_channel *chan, void *data)
static int unload_module(void)
{
- return ast_unregister_application (app);
+ return ast_unregister_application(app);
}
static int load_module(void)