#ifdef IMAP_STORAGE
char imapuser[80]; /* IMAP server login */
char imappassword[80]; /* IMAP server password if authpassword not defined */
+ char imapvmshareid[80]; /* Shared mailbox ID to use rather than the dialed one */
#endif
double volgain; /*!< Volume gain for voicemails sent via email */
AST_LIST_ENTRY(ast_vm_user) list;
ast_copy_string(vmu->imapuser, value, sizeof(vmu->imapuser));
} else if (!strcasecmp(var, "imappassword") || !strcasecmp(var, "imapsecret")) {
ast_copy_string(vmu->imappassword, value, sizeof(vmu->imappassword));
+ } else if (!strcasecmp(var, "imapvmshareid")) {
+ ast_copy_string(vmu->imapvmshareid, value, sizeof(vmu->imapvmshareid));
#endif
} else if (!strcasecmp(var, "delete") || !strcasecmp(var, "deletevoicemail")) {
ast_set2_flag(vmu, ast_true(value), VM_DELETE);
ast_copy_string(retval->imapuser, tmp->value, sizeof(retval->imapuser));
} else if (!strcasecmp(tmp->name, "imappassword") || !strcasecmp(tmp->name, "imapsecret")) {
ast_copy_string(retval->imappassword, tmp->value, sizeof(retval->imappassword));
+ } else if (!strcasecmp(tmp->name, "imapvmshareid")) {
+ ast_copy_string(retval->imapvmshareid, tmp->value, sizeof(retval->imapvmshareid));
#endif
} else
apply_option(retval, tmp->name, tmp->value);
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 *)(!ast_strlen_zero(vmu->imapvmshareid) ? vmu->imapvmshareid : mailbox));
pgm->header = hdr;
if (fold != 1) {
pgm->unseen = 1;
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", (!ast_strlen_zero(vmu->imapvmshareid) ? vmu->imapvmshareid : vmu->mailbox));
pgm->header = hdr;
pgm->deleted = 0;
pgm->undeleted = 1;
/* 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, (!ast_strlen_zero(vmu->imapvmshareid) ? vmu->imapvmshareid : 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, enc_cidnum);