]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix regression causing forwarding voicemails to not work with file storage.
authorJeff Peeler <jpeeler@digium.com>
Fri, 7 Jan 2011 19:57:42 +0000 (19:57 +0000)
committerJeff Peeler <jpeeler@digium.com>
Fri, 7 Jan 2011 19:57:42 +0000 (19:57 +0000)
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.6.2@301046 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 9f97fde216e62f0d20647fc0b6224dc0c2a282c9..298b033fe80aa6c6ed057a4102de0cee82c5bf35 100644 (file)
@@ -5007,12 +5007,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;