Mercurial > dovecot > core-2.2
changeset 19928:ba0605b83842
virtual plugin: If we detect backend box to be deleted, mark it permanently deleted.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Wed, 16 Mar 2016 10:04:32 +1100 |
parents | fa49be8b4835 |
children | e6a39782e898 |
files | src/plugins/virtual/virtual-storage.h src/plugins/virtual/virtual-sync.c |
diffstat | 2 files changed, 6 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/virtual/virtual-storage.h Wed Mar 16 09:30:20 2016 +1100 +++ b/src/plugins/virtual/virtual-storage.h Wed Mar 16 10:04:32 2016 +1100 @@ -110,6 +110,7 @@ unsigned int negative_match:1; unsigned int uids_nonsorted:1; unsigned int search_args_initialized:1; + unsigned int deleted:1; }; ARRAY_DEFINE_TYPE(virtual_backend_box, struct virtual_backend_box *);
--- a/src/plugins/virtual/virtual-sync.c Wed Mar 16 09:30:20 2016 +1100 +++ b/src/plugins/virtual/virtual-sync.c Wed Mar 16 10:04:32 2016 +1100 @@ -1092,6 +1092,8 @@ array_foreach(&bbox->uids, uidmap) seq_range_array_add(&removed_uids, uidmap->real_uid); virtual_sync_mailbox_box_remove(ctx, bbox, &removed_uids); + + bbox->deleted = TRUE; } static int virtual_sync_backend_box(struct virtual_sync_context *ctx, @@ -1102,6 +1104,9 @@ bool bbox_index_opened = bbox->box->opened; int ret; + if (bbox->deleted) + return 0; + /* if we already did some changes to index, commit them before syncing starts. */ virtual_backend_box_sync_mail_unset(bbox);