]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imap: Use batched seqset iteration from lib-storage.
authorsergey.kitov <sergey.kitov@open-xchange.com>
Tue, 8 Mar 2022 10:19:04 +0000 (12:19 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Mon, 28 Mar 2022 15:41:32 +0000 (15:41 +0000)
src/imap/cmd-copy.c
src/imap/imap-expunge.c

index 268c5bbc6a698e78d381a00b827540c889ee083e..e11d3adfdcd5b6a19e990e2c92c9d6817cfa0f41 100644 (file)
@@ -261,7 +261,7 @@ static bool cmd_copy_full(struct client_command_context *cmd, bool move)
        struct client *client = cmd->client;
        struct mailbox *destbox;
        struct mail_search_args *search_args;
-       struct imap_search_seqset_iter *seqset_iter = NULL;
+       struct mail_search_seqset_iter *seqset_iter = NULL;
        const char *messageset, *mailbox;
        enum mailbox_sync_flags sync_flags = 0;
        enum imap_sync_flags imap_flags = 0;
@@ -321,7 +321,7 @@ static bool cmd_copy_full(struct client_command_context *cmd, bool move)
                /* When moving mails, perform the work in batches of
                   MOVE_COMMIT_INTERVAL. Each such batch has its own
                   transaction and search query. */
-               seqset_iter = imap_search_seqset_iter_init(search_args,
+               seqset_iter = mail_search_seqset_iter_init(search_args,
                        client->messages_count, MOVE_COMMIT_INTERVAL);
        }
        do {
@@ -333,8 +333,8 @@ static bool cmd_copy_full(struct client_command_context *cmd, bool move)
                        break;
                }
        } while (seqset_iter != NULL &&
-                imap_search_seqset_iter_next(seqset_iter));
-       imap_search_seqset_iter_deinit(&seqset_iter);
+                mail_search_seqset_iter_next(seqset_iter));
+       mail_search_seqset_iter_deinit(&seqset_iter);
        mail_search_args_unref(&search_args);
 
        src_uidset = t_str_new(256);
index efe329453022dc8a1a5bddc21051a97b08f4ff4a..cc984e53665237c9dc9e69dbf9d0a9b0c16a69af 100644 (file)
@@ -6,8 +6,6 @@
 #include "imap-search-args.h"
 #include "imap-expunge.h"
 
-#define IMAP_EXPUNGE_BATCH_SIZE 1000
-
 /* get a seqset of all the mails with \Deleted */
 static int imap_expunge_get_seqset(struct mailbox *box,
                                   struct mail_search_arg *next_search_arg,
@@ -49,7 +47,7 @@ static int imap_expunge_get_seqset(struct mailbox *box,
 int imap_expunge(struct mailbox *box, struct mail_search_arg *next_search_arg,
                 unsigned int *expunged_count)
 {
-       struct imap_search_seqset_iter *seqset_iter;
+       struct mail_search_seqset_iter *seqset_iter;
        struct mail_search_args *search_args;
        struct mailbox_status status;
        bool expunges = FALSE;
@@ -87,8 +85,8 @@ int imap_expunge(struct mailbox *box, struct mail_search_arg *next_search_arg,
           b) The caller would have to do batching and sync the mailbox
           multiple times. This would require a new kind of cmd_sync() that
           would send untagged replies but not the tagged reply. */
-       seqset_iter = imap_search_seqset_iter_init(search_args, status.messages,
-                                                  IMAP_EXPUNGE_BATCH_SIZE);
+       seqset_iter = mail_search_seqset_iter_init(search_args, status.messages,
+                                                  MAIL_EXPUNGE_BATCH_SIZE);
 
        do {
                struct mailbox_transaction_context *t;
@@ -109,9 +107,9 @@ int imap_expunge(struct mailbox *box, struct mail_search_arg *next_search_arg,
                   so far. There's no need to rollback. */
                if (mailbox_transaction_commit(&t) < 0)
                        ret = -1;
-       } while (ret >= 0 && imap_search_seqset_iter_next(seqset_iter));
+       } while (ret >= 0 && mail_search_seqset_iter_next(seqset_iter));
 
-       imap_search_seqset_iter_deinit(&seqset_iter);
+       mail_search_seqset_iter_deinit(&seqset_iter);
        mail_search_args_unref(&search_args);
 
        if (ret < 0)