Merged revisions 78749 via svnmerge from
authorRussell Bryant <russell@russellbryant.com>
Thu, 9 Aug 2007 17:25:09 +0000 (17:25 +0000)
committerRussell Bryant <russell@russellbryant.com>
Thu, 9 Aug 2007 17:25:09 +0000 (17:25 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r78749 | russell | 2007-08-09 12:24:40 -0500 (Thu, 09 Aug 2007) | 9 lines

Fix subscriptions to multiple mailboxes for ODBC_STORAGE.  Also, leave a
comment for this to be fixed for IMAP_STORAGE, as well.  I left IMAP alone
since I know MarkM was working on this code right now for another reason.

This is broken even worse in trunk, but for a different reason.  The fact
that the mailbox option supported multiple mailboxes is completely not obvious
from the code in the channel drivers.  Anyway, I will fix that in another
commit ...

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@78750 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index aba3347..2bb86ea 100644 (file)
@@ -2438,17 +2438,16 @@ yuck:
 
 static int has_voicemail(const char *mailbox, const char *folder)
 {
-       char *context, tmp[256];
+       char tmp[256], *tmp2 = tmp, *mbox, *context;
        ast_copy_string(tmp, mailbox, sizeof(tmp));
-       if ((context = strchr(tmp, '@')))
-               *context++ = '\0';
-       else
-               context = "default";
-
-       if (messagecount(context, tmp, folder))
-               return 1;
-       else
-               return 0;
+       while ((context = mbox = strsep(&tmp2, ","))) {
+               strsep(&context, "@");
+               if (ast_strlen_zero(context))
+                       context = "default";
+               if (messagecount(context, mbox, folder))
+                       return 1;
+       }
+       return 0;
 }
 
 #elif defined(IMAP_STORAGE)
@@ -2670,6 +2669,8 @@ static int inboxcount(const char *mailbox, int *newmsgs, int *oldmsgs)
        return 0;
  }
 
+/*! XXX \todo Fix this function to support multiple mailboxes separated
+ * by commas */
 static int has_voicemail(const char *mailbox, const char *folder)
 {
        int newmsgs, oldmsgs;