]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 301046 via svnmerge from
authorJeff Peeler <jpeeler@digium.com>
Fri, 7 Jan 2011 19:58:30 +0000 (19:58 +0000)
committerJeff Peeler <jpeeler@digium.com>
Fri, 7 Jan 2011 19:58:30 +0000 (19:58 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

........
  r301046 | jpeeler | 2011-01-07 13:57:42 -0600 (Fri, 07 Jan 2011) | 8 lines

  Fix regression causing forwarding voicemails to not work with file storage.

  I had actually already fixed this in 295200 in 1.4 and thought it wasn't
  missing in the other branches for some reason.

  (closes issue #18358)
  Reported by: cabal95
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@301047 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 14e11fdc439dd966cc63b3102ecf8a4c607c8f12..754bfa040c61c0b971b7d7264f3e373bf059d248 100644 (file)
@@ -5224,12 +5224,20 @@ static int copy_message(struct ast_channel *chan, struct ast_vm_user *vmu, int i
        recipmsgnum = last_message_index(recip, todir) + 1;
        if (recipmsgnum < recip->maxmsg - (imbox ? 0 : inprocess_count(vmu->mailbox, vmu->context, 0))) {
                make_file(topath, sizeof(topath), todir, recipmsgnum);
-               /* If we are prepending a message for ODBC, then the message already
-                * exists in the database, but we want to force copying from the
-                * filesystem (since only the FS contains the prepend). */
-               copy_plain_file(frompath, topath);
-               STORE(todir, recip->mailbox, recip->context, recipmsgnum, chan, recip, fmt, duration, NULL, NULL);
-               vm_delete(topath);
+#ifndef ODBC_STORAGE
+               if (EXISTS(fromdir, msgnum, frompath, chan->language)) {        
+                       COPY(fromdir, msgnum, todir, recipmsgnum, recip->mailbox, recip->context, frompath, topath);
+               } else {
+#endif
+                       /* If we are prepending a message for ODBC, then the message already
+                        * exists in the database, but we want to force copying from the
+                        * filesystem (since only the FS contains the prepend). */
+                       copy_plain_file(frompath, topath);
+                       STORE(todir, recip->mailbox, recip->context, recipmsgnum, chan, recip, fmt, duration, NULL, NULL);
+                       vm_delete(topath);
+#ifndef ODBC_STORAGE
+               }
+#endif
        } else {
                ast_log(AST_LOG_ERROR, "Recipient mailbox %s@%s is full\n", recip->mailbox, recip->context);
                res = -1;