From: Marco Bettini Date: Mon, 11 Sep 2023 08:14:25 +0000 (+0000) Subject: fts: fts_backend_is_uid_indexed() - Set last_indexed_uid_r also when uid is found X-Git-Tag: 2.4.0~2534 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1ed1b9b6ac310c369e33940bc52ec928a5b3117;p=thirdparty%2Fdovecot%2Fcore.git fts: fts_backend_is_uid_indexed() - Set last_indexed_uid_r also when uid is found 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). --- diff --git a/src/plugins/fts/fts-api.c b/src/plugins/fts/fts-api.c index b3ff475675..1f8ea09663 100644 --- a/src/plugins/fts/fts-api.c +++ b/src/plugins/fts/fts-api.c @@ -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)