]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix subscriptions to multiple mailboxes for ODBC_STORAGE. Also, leave a
authorRussell Bryant <russell@russellbryant.com>
Thu, 9 Aug 2007 17:24:40 +0000 (17:24 +0000)
committerRussell Bryant <russell@russellbryant.com>
Thu, 9 Aug 2007 17:24:40 +0000 (17:24 +0000)
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/branches/1.4@78749 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 0150a41a37d8d1fd988b6b93706906cb8963d599..bfbd803e211f53ade84d7a94aadffe40c2510f80 100644 (file)
@@ -2253,17 +2253,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)
@@ -2483,6 +2482,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;