_really_ fix app_directory (doh... how did I miss this before?) (issue #5232, take two)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6611 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Kevin P. Fleming
2005-09-15 01:31:49 +00:00
parent 44e3b6feb1
commit 981970c57b

View File

@@ -193,7 +193,7 @@ static int play_mailbox_owner(struct ast_channel *chan, char *context, char *dia
case '1': case '1':
/* Name selected */ /* Name selected */
loop = 0; loop = 0;
if (!ast_goto_if_exists(chan, dialcontext, ext, 1)) { if (ast_goto_if_exists(chan, dialcontext, ext, 1)) {
ast_log(LOG_WARNING, ast_log(LOG_WARNING,
"Can't find extension '%s' in context '%s'. " "Can't find extension '%s' in context '%s'. "
"Did you pass the wrong context to Directory?\n", "Did you pass the wrong context to Directory?\n",
@@ -300,25 +300,20 @@ static int do_directory(struct ast_channel *chan, struct ast_config *cfg, char *
return -1; return -1;
} }
if (digit == '0') { if (digit == '0') {
if (ast_exists_extension(chan,chan->context,"o",1,chan->cid.cid_num) || if (!ast_goto_if_exists(chan, chan->context, "o", 1) ||
(!ast_strlen_zero(chan->macrocontext) && (!ast_strlen_zero(chan->macrocontext) &&
ast_exists_extension(chan, chan->macrocontext, "o", 1, chan->cid.cid_num))) { !ast_goto_if_exists(chan, chan->macrocontext, "o", 1))) {
strcpy(chan->exten, "o");
chan->priority = 0;
return 0; return 0;
} else { } else {
ast_log(LOG_WARNING, "Can't find extension 'o' in current context. " ast_log(LOG_WARNING, "Can't find extension 'o' in current context. "
"Not Exiting the Directory!\n"); "Not Exiting the Directory!\n");
res = 0; res = 0;
} }
} }
if (digit == '*') { if (digit == '*') {
if (ast_exists_extension(chan,chan->context,"a",1,chan->cid.cid_num) || if (!ast_goto_if_exists(chan, chan->context, "a", 1) ||
(!ast_strlen_zero(chan->macrocontext) && (!ast_strlen_zero(chan->macrocontext) &&
ast_exists_extension(chan, chan->macrocontext, "a", 1, chan->cid.cid_num))) { !ast_goto_if_exists(chan, chan->macrocontext, "a", 1))) {
strcpy(chan->exten, "a");
chan->priority = 0;
return 0; return 0;
} else { } else {
ast_log(LOG_WARNING, "Can't find extension 'a' in current context. " ast_log(LOG_WARNING, "Can't find extension 'a' in current context. "
@@ -375,11 +370,11 @@ static int do_directory(struct ast_channel *chan, struct ast_config *cfg, char *
lastuserchoice = 0; lastuserchoice = 0;
break; break;
case '1': case '1':
/* user pressed '1' and extensions exists */ /* user pressed '1' and extensions exists;
play_mailbox_owner will already have done
a goto() on the channel
*/
lastuserchoice = res; lastuserchoice = res;
ast_copy_string(chan->context, dialcontext, sizeof(chan->context));
ast_copy_string(chan->exten, v->name, sizeof(chan->exten));
chan->priority = 0;
break; break;
case '*': case '*':
/* user pressed '*' to skip something found */ /* user pressed '*' to skip something found */