Handle different contexts (bug #1702)
authorMark Spencer <markster@digium.com>
Mon, 24 May 2004 19:24:20 +0000 (19:24 +0000)
committerMark Spencer <markster@digium.com>
Mon, 24 May 2004 19:24:20 +0000 (19:24 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3060 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 84d8421..37972cb 100755 (executable)
@@ -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[] =