unsigned int counter = 0, max;
int ret = 0;
- if (mailbox_get_metadata(box, MAILBOX_METADATA_PRECACHE_FIELDS,
- &metadata) < 0) {
- e_error(event, "Mailbox %s: Precache-fields lookup failed: %s",
+ if (mailbox_get_status(box, STATUS_MESSAGES | STATUS_FTS_LAST_INDEXED_UID,
+ &status) < 0) {
+ e_error(event, "Mailbox %s: Status lookup failed: %s",
mailbox_get_vname(box),
mailbox_get_last_internal_error(box, NULL));
return -1;
}
- if (mailbox_get_status(box, STATUS_MESSAGES | STATUS_FTS_LAST_INDEXED_UID,
- &status) < 0) {
- e_error(event, "Mailbox %s: Status lookup failed: %s",
+
+ if (status.fts_last_indexed_uid >= status.uidnext - 1) {
+ e_info(event, "Mailbox %s: Index is already up to date",
+ mailbox_get_vname(box));
+ return 0;
+ }
+
+ if (mailbox_get_metadata(box, MAILBOX_METADATA_PRECACHE_FIELDS,
+ &metadata) < 0) {
+ e_error(event, "Mailbox %s: Precache-fields lookup failed: %s",
mailbox_get_vname(box),
mailbox_get_last_internal_error(box, NULL));
return -1;
&unused, &seq);
seq++;
- if (seq > status.messages) {
- if (doveadm_verbose) {
- e_info(event, "%s: Cache is already up to date",
- mailbox_get_vname(box));
- }
- return 0;
- }
if (doveadm_verbose) {
e_info(event, "%s: Caching mails seq=%u..%u",
mailbox_get_vname(box), seq, status.messages);