]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 74476 via svnmerge from
authorMark Michelson <mmichelson@digium.com>
Tue, 10 Jul 2007 23:34:06 +0000 (23:34 +0000)
committerMark Michelson <mmichelson@digium.com>
Tue, 10 Jul 2007 23:34:06 +0000 (23:34 +0000)
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

index c837e5d41e3d4498a3b443d33803b27a8909725e..54d312b043a1f9101430c9908c95339e9f5a357f 100644 (file)
@@ -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;