]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: If mailbox_move() fails, reset mail_save_context.moving==FALSE
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 29 Sep 2016 11:00:49 +0000 (14:00 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 13 Oct 2016 08:18:16 +0000 (10:18 +0200)
src/lib-storage/mail-storage.c

index f5098ebf98dc9a9797714db85a5896b0d8b8c880..d7072102027921d0b198358d81336d896c192872 100644 (file)
@@ -2233,14 +2233,15 @@ int mailbox_copy(struct mail_save_context **_ctx, struct mail *mail)
 int mailbox_move(struct mail_save_context **_ctx, struct mail *mail)
 {
        struct mail_save_context *ctx = *_ctx;
+       int ret;
 
-       ctx->moving = TRUE;
-       if (mailbox_copy(_ctx, mail) < 0)
-               return -1;
+       i_assert(!ctx->moving);
 
-       mail_expunge(mail);
+       ctx->moving = TRUE;
+       if ((ret = mailbox_copy(_ctx, mail)) == 0)
+               mail_expunge(mail);
        ctx->moving = FALSE;
-       return 0;
+       return ret;
 }
 
 int mailbox_save_using_mail(struct mail_save_context **ctx, struct mail *mail)