Merge josh's exit dir patch (bug #2995)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4406 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Spencer
2004-12-08 21:24:00 +00:00
parent 82a95912e6
commit 52a39dd8c1

View File

@@ -40,7 +40,9 @@ static char *descrip =
"the vm-context if unspecified. The 'f' option causes the directory to match\n"
"based on the first name in voicemail.conf instead of the last name.\n"
"Returns 0 unless the user hangs up. It also sets up the channel on exit\n"
"to enter the extension the user selected.\n";
"to enter the extension the user selected. If the user enters '0' and there\n"
"exists an extension 'o' in the current context, the directory will exit with 0\n"
"and call control will resume at that extension.\n";
/* For simplicity, I'm keeping the format compatible with the voicemail config,
but i'm open to suggestions for isolating it */
@@ -227,6 +229,20 @@ static int do_directory(struct ast_channel *chan, struct ast_config *cfg, char *
"(context in which to interpret extensions)\n");
return -1;
}
if (digit == '0') {
if (ast_exists_extension(chan,chan->context,"o",1,chan->cid.cid_num) ||
(!ast_strlen_zero(chan->macrocontext) &&
ast_exists_extension(chan, chan->macrocontext, "o", 1, chan->cid.cid_num))) {
strncpy(chan->exten, "o", sizeof(chan->exten)-1);
chan->priority = 0;
return 0;
} else {
ast_log(LOG_WARNING, "Can't find extension 'o' in current context. "
"Not Exiting the Directory!\n");
res = 0;
}
}
memset(ext, 0, sizeof(ext));
ext[0] = digit;
res = 0;