diff --git a/src/plugins/imapsieve/imap-sieve-storage.c b/src/plugins/imapsieve/imap-sieve-storage.c index 0d5aee5336d6caec2224b381a0e0cf59d32baeca..5954b25e3f3161d0951dd505d96705290cd4b27b 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);