diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-05-24 19:24:20 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-05-24 19:24:20 +0000 |
commit | 476e3c218e6917fbd504f4f28f3cd0d19697f230 (patch) | |
tree | f11c9906b00a97530e01db02cc149976ae50a847 | |
parent | 553adb39a96f136db23affa0ed50faf5ff031601 (diff) |
Handle different contexts (bug #1702)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3060 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | apps/app_voicemail.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 84d8421b5..37972cb49 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -3423,31 +3423,33 @@ static int append_mailbox(char *context, char *mbox, char *data) static int vm_box_exists(struct ast_channel *chan, void *data) { struct localuser *u; - struct ast_vm_user *vmu; struct ast_vm_user svm; char *context, *box; + char tmp[256]; if (!data || !strlen(data)) { ast_log(LOG_ERROR, "MailboxExists requires an argument: (vmbox[@context])\n"); return -1; + } else { + strncpy(tmp, data, sizeof(tmp) - 1); } LOCAL_USER_ADD(u); - context = ast_strdupa(data); - if (index(context, '@')) { - box = strsep(&context, "@"); - } else { - box = context; - context = "default"; - } + box = tmp; while(*box) { - if ((*box != 'u') && (*box != 's') && (*box != 'b')) + if ((*box == 's') || (*box == 'b') || (*box == 'u')) { + box++; + } else break; - box++; } - vmu = find_user(&svm, context, box); - if (vmu) { + context = strchr(tmp, '@'); + if (context) { + *context = '\0'; + context++; + } + + if ((!find_user(&svm, context, box))) { if (ast_exists_extension(chan, chan->context, chan->exten, chan->priority + 101, chan->callerid)) { chan->priority += 100; } else @@ -3457,7 +3459,6 @@ static int vm_box_exists(struct ast_channel *chan, void *data) { return 0; } - #ifndef USEMYSQLVM /* XXX TL Bug 690 */ static char show_voicemail_users_help[] = |