From fb6f6ba67f895c079d0649dd050c763d6a327c3a Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Tue, 10 Jul 2007 23:34:06 +0000 Subject: [PATCH] Merged revisions 74476 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r74476 | mmichelson | 2007-07-10 18:32:52 -0500 (Tue, 10 Jul 2007) | 5 lines Forwarding a message with IMAP storage was storing the message in the sender's box instead of the forwarded mailbox. (closes issue #10138, reported and patched by jaroth) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@74477 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_voicemail.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index c837e5d41e..54d312b043 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -4176,6 +4176,7 @@ static int forward_message(struct ast_channel *chan, char *context, struct vm_st char *temp; char todir[256]; int todircount=0; + struct vm_state *dstvms; #endif char username[70]=""; int res = 0, cmd = 0; @@ -4366,7 +4367,19 @@ static int forward_message(struct ast_channel *chan, char *context, struct vm_st /* should not assume "fmt" here! */ save_body(body,vms,"2",fmt); - STORE(todir, vmtmp->mailbox, vmtmp->context, vms->curmsg, chan, vmtmp, fmt, duration, vms); + /* get destination mailbox */ + dstvms = get_vm_state_by_mailbox(vmtmp->mailbox,0); + if (dstvms) { + init_mailstream(dstvms, 0); + if (!dstvms->mailstream) { + ast_log (LOG_ERROR,"IMAP mailstream for %s is NULL\n",vmtmp->mailbox); + } else { + STORE(todir, vmtmp->mailbox, vmtmp->context, dstvms->curmsg, chan, vmtmp, fmt, duration, dstvms); + run_externnotify(vmtmp->context, vmtmp->mailbox); + } + } else { + ast_log (LOG_ERROR,"Could not find state information for mailbox %s\n",vmtmp->mailbox); + } if (!ast_strlen_zero(vmtmp->serveremail)) myserveremail = vmtmp->serveremail;