Index: app_voicemail.c =================================================================== RCS file: /usr/cvsroot/asterisk/apps/app_voicemail.c,v retrieving revision 1.96 diff -d -u -r1.96 app_voicemail.c --- app_voicemail.c 24 May 2004 00:26:46 -0000 1.96 +++ app_voicemail.c 24 May 2004 02:42:43 -0000 @@ -3423,31 +3423,33 @@ 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 @@ return 0; } - #ifndef USEMYSQLVM /* XXX TL Bug 690 */ static char show_voicemail_users_help[] =