]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: fts_backend_is_uid_indexed() - Set last_indexed_uid_r also when uid is found
authorMarco Bettini <marco.bettini@open-xchange.com>
Mon, 11 Sep 2023 08:14:25 +0000 (08:14 +0000)
committerMarco Bettini <marco.bettini@open-xchange.com>
Tue, 10 Oct 2023 07:13:49 +0000 (07:13 +0000)
Previously last_indexed_uid_r was set only if uid was not found.
Now we set it to the uid provided in input (the functions invoked
do not provide the information).

src/plugins/fts/fts-api.c

index b3ff47567522c932ebe9c016eb0f1a1b26b1b87e..1f8ea0966384be1f75243af4c468cef772947043 100644 (file)
@@ -168,22 +168,23 @@ fts_backend_is_uid_indexed_virtual(struct mailbox *box,
 int fts_backend_is_uid_indexed(struct fts_backend *backend, struct mailbox *box,
                               uint32_t uid, uint32_t *last_indexed_uid_r)
 {
+       int ret;
        if (box->virtual_vfuncs != NULL)
-               return fts_backend_is_uid_indexed_virtual(box, last_indexed_uid_r);
-
-       if (backend->v.is_uid_indexed != NULL)
-               return backend->v.is_uid_indexed(backend, box, uid,
-                                                last_indexed_uid_r);
-
-       uint32_t last_uid;
-       if (fts_backend_get_last_uid(backend, box, &last_uid) < 0)
-               return -1;
+               ret = fts_backend_is_uid_indexed_virtual(box, last_indexed_uid_r);
+       else if (backend->v.is_uid_indexed != NULL)
+               ret = backend->v.is_uid_indexed(backend, box, uid, last_indexed_uid_r);
+       else {
+               uint32_t last_uid;
+               if (fts_backend_get_last_uid(backend, box, &last_uid) < 0)
+                       return -1;
 
-       if (uid > last_uid) {
                *last_indexed_uid_r = last_uid;
-               return 0;
+               return uid > last_uid ? 0 : 1;
        }
-       return 1;
+       if (ret > 0)
+               *last_indexed_uid_r = uid;
+       return ret;
+
 }
 
 bool fts_backend_is_updating(struct fts_backend *backend)