]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
virtual plugin: Disable caching via mailbox list indexes.
authorTimo Sirainen <tss@iki.fi>
Tue, 22 Sep 2015 10:50:08 +0000 (13:50 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 22 Sep 2015 10:50:08 +0000 (13:50 +0300)
Otherwise e.g. STATUS can give stale replies.

src/plugins/virtual/virtual-storage.c

index 7a6e9db492a41ef18033d2abc132933d7da958d4..49eaf4cd40b03aff7e4a39051e6a8dff9f8fc350 100644 (file)
@@ -701,6 +701,24 @@ static bool virtual_is_inconsistent(struct mailbox *box)
        return index_storage_is_inconsistent(box);
 }
 
+static int
+virtual_list_index_has_changed(struct mailbox *box ATTR_UNUSED,
+                              struct mail_index_view *list_view ATTR_UNUSED,
+                              uint32_t seq ATTR_UNUSED)
+{
+       /* we don't have any quick and easy optimizations for tracking
+          virtual folders. ideally we'd completely disable mailbox list
+          indexes for them, but this is the easiest way to do it for now. */
+       return 1;
+}
+
+static void
+virtual_list_index_update_sync(struct mailbox *box ATTR_UNUSED,
+                              struct mail_index_transaction *trans ATTR_UNUSED,
+                              uint32_t seq ATTR_UNUSED)
+{
+}
+
 struct mail_storage virtual_storage = {
        .name = VIRTUAL_STORAGE_NAME,
        .class_flags = MAIL_STORAGE_CLASS_FLAG_NOQUOTA,
@@ -738,8 +756,8 @@ struct mailbox virtual_mailbox = {
                index_storage_attribute_iter_init,
                index_storage_attribute_iter_next,
                index_storage_attribute_iter_deinit,
-               NULL,
-               NULL,
+               virtual_list_index_has_changed,
+               virtual_list_index_update_sync,
                virtual_storage_sync_init,
                index_mailbox_sync_next,
                index_mailbox_sync_deinit,