With IMAP backend, messages in INBOX were counted twice for MWI.

(closes issue #17135)
 Reported by: edhorton
 Patches: 
       20100513__issue17135.diff.txt uploaded by tilghman (license 14)
       17135_2.diff uploaded by ebroad (license 878)
 Tested by: edhorton, ebroad


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@263589 65c4cc65-6c06-0410-ace0-fbb531ad65f3
certified/1.8.6
Tilghman Lesher 15 years ago
parent b5d5cc565f
commit fa8e44f232

@ -1924,30 +1924,34 @@ exit:
static int folder_int(const char *folder) static int folder_int(const char *folder)
{ {
/*assume a NULL folder means INBOX*/ /*assume a NULL folder means INBOX*/
if (!folder) if (!folder) {
return 0; return 0;
if (!strcasecmp(folder, imapfolder)) }
if (!strcasecmp(folder, imapfolder)) {
return 0; return 0;
else if (!strcasecmp(folder, "Old")) } else if (!strcasecmp(folder, "Old")) {
return 1; return 1;
else if (!strcasecmp(folder, "Work")) } else if (!strcasecmp(folder, "Work")) {
return 2; return 2;
else if (!strcasecmp(folder, "Family")) } else if (!strcasecmp(folder, "Family")) {
return 3; return 3;
else if (!strcasecmp(folder, "Friends")) } else if (!strcasecmp(folder, "Friends")) {
return 4; return 4;
else if (!strcasecmp(folder, "Cust1")) } else if (!strcasecmp(folder, "Cust1")) {
return 5; return 5;
else if (!strcasecmp(folder, "Cust2")) } else if (!strcasecmp(folder, "Cust2")) {
return 6; return 6;
else if (!strcasecmp(folder, "Cust3")) } else if (!strcasecmp(folder, "Cust3")) {
return 7; return 7;
else if (!strcasecmp(folder, "Cust4")) } else if (!strcasecmp(folder, "Cust4")) {
return 8; return 8;
else if (!strcasecmp(folder, "Cust5")) } else if (!strcasecmp(folder, "Cust5")) {
return 9; return 9;
else /*assume they meant INBOX if folder is not found otherwise*/ } else if (!strcasecmp(folder, "Urgent")) {
return 11;
} else { /*assume they meant INBOX if folder is not found otherwise*/
return 0; return 0;
}
} }
static int __messagecount(const char *context, const char *mailbox, const char *folder) static int __messagecount(const char *context, const char *mailbox, const char *folder)
@ -1998,14 +2002,11 @@ static int __messagecount(const char *context, const char *mailbox, const char *
if (vms_p) { if (vms_p) {
ast_debug(3, "Returning before search - user is logged in\n"); ast_debug(3, "Returning before search - user is logged in\n");
if (fold == 0) { /* INBOX */ if (fold == 0) { /* INBOX */
return vms_p->newmessages; return urgent ? vms_p->urgentmessages : vms_p->newmessages;
} }
if (fold == 1) { /* Old messages */ if (fold == 1) { /* Old messages */
return vms_p->oldmessages; return vms_p->oldmessages;
} }
if (fold == 11) {/*Urgent messages*/
return vms_p->urgentmessages;
}
} }
/* add one if not there... */ /* add one if not there... */
@ -2028,7 +2029,7 @@ static int __messagecount(const char *context, const char *mailbox, const char *
hdr = mail_newsearchheader ("X-Asterisk-VM-Extension", (char *)(!ast_strlen_zero(vmu->imapvmshareid) ? vmu->imapvmshareid : mailbox)); hdr = mail_newsearchheader ("X-Asterisk-VM-Extension", (char *)(!ast_strlen_zero(vmu->imapvmshareid) ? vmu->imapvmshareid : mailbox));
hdr->next = mail_newsearchheader("X-Asterisk-VM-Context", (char *) S_OR(context, "default")); hdr->next = mail_newsearchheader("X-Asterisk-VM-Context", (char *) S_OR(context, "default"));
pgm->header = hdr; pgm->header = hdr;
if (fold != 1) { if (fold != OLD_FOLDER) {
pgm->unseen = 1; pgm->unseen = 1;
pgm->seen = 0; pgm->seen = 0;
} }
@ -2040,9 +2041,14 @@ static int __messagecount(const char *context, const char *mailbox, const char *
pgm->seen = 1; pgm->seen = 1;
} }
/* look for urgent messages */ /* look for urgent messages */
if (urgent) { if (fold == NEW_FOLDER) {
pgm->flagged = 1; if (urgent) {
pgm->unflagged = 0; pgm->flagged = 1;
pgm->unflagged = 0;
} else {
pgm->flagged = 0;
pgm->unflagged = 1;
}
} }
pgm->undeleted = 1; pgm->undeleted = 1;
pgm->deleted = 0; pgm->deleted = 0;

Loading…
Cancel
Save