From: Mark Spencer Date: Thu, 11 Nov 2004 15:16:50 +0000 (+0000) Subject: On second thought, require 'j' option to enable new jumping feature X-Git-Tag: 1.2.0-beta1~1861 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=13d180bc66ea90a900d58807179de65ea6b1f193;p=thirdparty%2Fasterisk.git On second thought, require 'j' option to enable new jumping feature git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4205 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_authenticate.c b/apps/app_authenticate.c index 7f681006c8..8c5d0722ea 100755 --- a/apps/app_authenticate.c +++ b/apps/app_authenticate.c @@ -42,12 +42,15 @@ static char *descrip = "of the following letters:\n" " a - Set account code to the password that is entered\n" " d - Interpret path as database key, not literal file\n" +" j - Support jumping to n+101\n" " r - Remove database key upon successful entry (valid with 'd' only)\n" "\n" "When using a database key, the value associated with the key can be\n" "anything.\n" "Returns 0 if the user enters a valid password within three\n" -"tries, or -1 (or on hangup) or n+101 if exists.\n"; +"tries, or -1 on hangup. If the priority n+101 exists and invalid\n" +"authentication was entered, and the 'j' flag was specified, processing\n" +"will jump to n+101 and 0 will be returned.\n"; STANDARD_LOCAL_USER; @@ -56,6 +59,7 @@ LOCAL_USER_DECL; static int auth_exec(struct ast_channel *chan, void *data) { int res=0; + int jump = 0; int retries; struct localuser *u; char password[256]=""; @@ -81,6 +85,8 @@ static int auth_exec(struct ast_channel *chan, void *data) opts++; } else opts = ""; + if (strchr(opts, 'j')) + jump = 1; /* Start asking for password */ prompt = "agent-pass"; for (retries = 0; retries < 3; retries++) { @@ -133,7 +139,7 @@ static int auth_exec(struct ast_channel *chan, void *data) if (!res) res = ast_waitstream(chan, ""); } else { - if (ast_exists_extension(chan, chan->context, chan->exten, chan->priority + 101, chan->cid.cid_num)) { + if (jump && ast_exists_extension(chan, chan->context, chan->exten, chan->priority + 101, chan->cid.cid_num)) { chan->priority+=100; res = 0; } else {