From 13d180bc66ea90a900d58807179de65ea6b1f193 Mon Sep 17 00:00:00 2001 From: Mark Spencer Date: Thu, 11 Nov 2004 15:16:50 +0000 Subject: [PATCH] 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 --- apps/app_authenticate.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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 {