From: Mark Spencer Date: Mon, 24 May 2004 19:24:20 +0000 (+0000) Subject: Handle different contexts (bug #1702) X-Git-Tag: 1.0.0-rc1~391 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3377298b06f31b3fcc631ec6a12632fb8177510e;p=thirdparty%2Fasterisk.git Handle different contexts (bug #1702) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3060 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 84d8421b57..37972cb49f 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[] =