From 9e6e5ee02147e656aadf61ca55ba0f260a8d2673 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@dovecot.fi> Date: Thu, 23 Jun 2016 13:30:49 +0200 Subject: [PATCH] imapsieve plugin: During transaction run the synchronized version of the target mailbox was opened too early. This meant opening a mailbox a second time even if it did not match any mailbox rules. --- src/plugins/imapsieve/imap-sieve-storage.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/plugins/imapsieve/imap-sieve-storage.c b/src/plugins/imapsieve/imap-sieve-storage.c index 0d5aee533..5954b25e3 100644 --- a/src/plugins/imapsieve/imap-sieve-storage.c +++ b/src/plugins/imapsieve/imap-sieve-storage.c @@ -595,13 +595,6 @@ imap_sieve_mailbox_transaction_run( (user, isuser->client->lda_set); } - /* Get synchronized view on the mailbox */ - sbox = mailbox_alloc(box->list, box->vname, 0); - if (mailbox_sync(sbox, 0) < 0) { - mailbox_free(&sbox); - return -1; - } - can_discard = FALSE; switch (isuser->cur_cmd) { case IMAP_SIEVE_CMD_APPEND: @@ -655,10 +648,16 @@ imap_sieve_mailbox_transaction_run( if (ret <= 0) { // FIXME: temp fail should be handled properly - mailbox_free(&sbox); return 0; } + /* Get synchronized view on the mailbox */ + sbox = mailbox_alloc(box->list, box->vname, 0); + if (mailbox_sync(sbox, 0) < 0) { + mailbox_free(&sbox); + return -1; + } + /* Create transaction for event messages */ st = mailbox_transaction_begin(sbox, 0); headers_ctx = mailbox_header_lookup_init(sbox, wanted_headers); -- GitLab