diff options
author | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-10-23 11:55:21 +0000 |
---|---|---|
committer | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-10-23 11:55:21 +0000 |
commit | 40bd72f0c0b730e548d132f8a50d168c7c4152af (patch) | |
tree | 441150842dc869a9168a96562c4a5504433e430c /apps/app_voicemail.c | |
parent | 5bb9cb0c96ba53c2ef3af2172c8521cf9e5d6976 (diff) |
make operator=no work correctly, fix typo (bug #2665)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/v1-0@4058 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_voicemail.c')
-rwxr-xr-x | apps/app_voicemail.c | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 35ba7b411..399bd0b9c 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -1418,16 +1418,22 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int } /* Check for a '0' here */ if (res == '0') { - transfer: - strncpy(chan->exten, "o", sizeof(chan->exten) - 1); - if (!ast_strlen_zero(vmu->exit)) { - strncpy(chan->context, vmu->exit, sizeof(chan->context) - 1); - } else if (ousemacro && !ast_strlen_zero(chan->macrocontext)) { - strncpy(chan->context, chan->macrocontext, sizeof(chan->context) - 1); + transfer: + if (vmu->operator) { + strncpy(chan->exten, "o", sizeof(chan->exten) - 1); + if (!ast_strlen_zero(vmu->exit)) { + strncpy(chan->context, vmu->exit, sizeof(chan->context) - 1); + } else if (ousemacro && !ast_strlen_zero(chan->macrocontext)) { + strncpy(chan->context, chan->macrocontext, sizeof(chan->context) - 1); + } + ast_play_and_wait(chan, "transfer"); + chan->priority = 0; + free_user(vmu); + return 0; + } else { + ast_play_and_wait(chan, "vm-sorry"); + return 0; } - chan->priority = 0; - free_user(vmu); - return 0; } if (res < 0) { free_user(vmu); @@ -4653,9 +4659,7 @@ static int play_record_review(struct ast_channel *chan, char *playfile, char *re /* User has hung up, no options to give */ return res; if (cmd == '0') { - /* Erase the message if 0 pushed during playback */ - ast_play_and_wait(chan, "vm-deleted"); - vm_delete(recordfile); + break; } else if (cmd == '*') { break; } @@ -4708,13 +4712,11 @@ static int play_record_review(struct ast_channel *chan, char *playfile, char *re return 1; #endif case '0': - if (outsidecaller && vmu->operator) { - if (message_exists) - ast_play_and_wait(chan, "vm-msgsaved"); - return cmd; - } else - cmd = ast_play_and_wait(chan, "vm-sorry"); - break; + if (message_exists || recorded) { + ast_play_and_wait(chan, "vm-deleted"); + vm_delete(recordfile); + } + return cmd; default: /* If the caller is an ouside caller, and the review option is enabled, allow them to review the message, but let the owner of the box review |