diff -ruN asterisk-1.4.21.2-save/apps/app_voicemail.c asterisk-1.4.21.2/apps/app_voicemail.c --- asterisk-1.4.21.2-save/apps/app_voicemail.c 2008-10-10 11:19:58.000000000 +0100 +++ asterisk-1.4.21.2/apps/app_voicemail.c 2008-10-10 11:20:38.000000000 +0100 @@ -344,6 +344,7 @@ #ifdef IMAP_STORAGE char imapuser[80]; /* IMAP server login */ char imappassword[80]; /* IMAP server password if authpassword not defined */ + char imapmbxid[80]; /* Shared mailbox ID to use rather than the dial in one */ #endif double volgain; /*!< Volume gain for voicemails sent via email */ AST_LIST_ENTRY(ast_vm_user) list; @@ -603,6 +604,8 @@ ast_copy_string(vmu->imapuser, value, sizeof(vmu->imapuser)); } else if (!strcasecmp(var, "imappassword")) { ast_copy_string(vmu->imappassword, value, sizeof(vmu->imappassword)); + } else if (!strcasecmp(var, "imapmbxid")) { + ast_copy_string(vmu->imapmbxid, value, sizeof(vmu->imapmbxid)); #endif } else if (!strcasecmp(var, "delete") || !strcasecmp(var, "deletevoicemail")) { ast_set2_flag(vmu, ast_true(value), VM_DELETE); @@ -707,6 +710,8 @@ ast_copy_string(retval->imapuser, tmp->value, sizeof(retval->imapuser)); } else if (!strcasecmp(tmp->name, "imappassword")) { ast_copy_string(retval->imappassword, tmp->value, sizeof(retval->imappassword)); + } else if (!strcasecmp(tmp->name, "imapmbxid")) { + ast_copy_string(retval->imapmbxid, tmp->value, sizeof(retval->imapmbxid)); #endif } else apply_option(retval, tmp->name, tmp->value); @@ -1866,7 +1871,11 @@ /* fprintf(p, "X-Asterisk-VM-Orig-Mailbox: %s" ENDL, ext); */ fprintf(p, "X-Asterisk-VM-Server-Name: %s" ENDL, fromstring); fprintf(p, "X-Asterisk-VM-Context: %s" ENDL, context); +#ifdef IMAP_STORAGE + fprintf(p, "X-Asterisk-VM-Extension: %s" ENDL, ((vmu->imapmbxid[0] != '\0')?vmu->imapmbxid:mailbox)); +#else fprintf(p, "X-Asterisk-VM-Extension: %s" ENDL, mailbox); +#endif fprintf(p, "X-Asterisk-VM-Priority: %d" ENDL, chan->priority); fprintf(p, "X-Asterisk-VM-Caller-channel: %s" ENDL, chan->name); fprintf(p, "X-Asterisk-VM-Caller-ID-Num: %s" ENDL, cidnum); @@ -2493,7 +2502,7 @@ if (ret == 0) { ast_mutex_lock(&vms_p->lock); pgm = mail_newsearchpgm (); - hdr = mail_newsearchheader ("X-Asterisk-VM-Extension", (char *)mailbox); + hdr = mail_newsearchheader ("X-Asterisk-VM-Extension", (char *)((vmu->imapmbxid[0] != '\0')?vmu->imapmbxid:mailbox)); pgm->header = hdr; if (fold != 1) { pgm->unseen = 1; @@ -4857,7 +4866,7 @@ pgm = mail_newsearchpgm(); /* Check IMAP folder for Asterisk messages only... */ - hdr = mail_newsearchheader ("X-Asterisk-VM-Extension", vmu->mailbox); + hdr = mail_newsearchheader ("X-Asterisk-VM-Extension", ((vmu->imapmbxid[0] != '\0')?vmu->imapmbxid:vmu->mailbox)); pgm->header = hdr; pgm->deleted = 0; pgm->undeleted = 1;