[asterisk-commits] tilghman: trunk r262656 - /trunk/apps/app_privacy.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed May 12 11:23:32 CDT 2010
Author: tilghman
Date: Wed May 12 11:23:26 2010
New Revision: 262656
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=262656
Log:
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
Modified:
trunk/apps/app_privacy.c
Modified: trunk/apps/app_privacy.c
URL: http://svnview.digium.com/svn/asterisk/trunk/apps/app_privacy.c?view=diff&rev=262656&r1=262655&r2=262656
==============================================================================
--- trunk/apps/app_privacy.c (original)
+++ trunk/apps/app_privacy.c Wed May 12 11:23:26 2010
@@ -21,7 +21,7 @@
* \brief Block all calls without Caller*ID, require phone # to be entered
*
* \author Mark Spencer <markster at digium.com>
- *
+ *
* \ingroup applications
*/
@@ -101,48 +101,55 @@
} 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);
-
- if (args.maxretries) {
- if (sscanf(args.maxretries, "%30d", &x) == 1)
- maxretries = x;
- else
- ast_log(LOG_WARNING, "Invalid max retries argument\n");
- }
- if (args.minlength) {
- if (sscanf(args.minlength, "%30d", &x) == 1)
- minlength = x;
- else
- ast_log(LOG_WARNING, "Invalid min length argument\n");
- }
- }
+ }
+ }
+
+ parse = ast_strdupa(S_OR(data, ""));
+
+ 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 (!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 ) {
@@ -161,25 +168,27 @@
}
} 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 {
@@ -192,7 +201,7 @@
static int unload_module(void)
{
- return ast_unregister_application (app);
+ return ast_unregister_application(app);
}
static int load_module(void)
More information about the asterisk-commits
mailing list