time_t save_timestamp;
int ret;
+ /* update wanted fields in case we didn't already set them for the
+ search */
mail_add_temp_wanted_fields(mail, MAIL_FETCH_GUID |
MAIL_FETCH_SAVE_DATE,
exporter->wanted_headers);
struct mail_search_args *search_args;
struct mail_search_arg *sarg;
struct mail *mail;
+ enum mail_fetch_field wanted_fields = 0;
+ struct mailbox_header_lookup_ctx *wanted_headers = NULL;
int ret;
search_args = mail_search_build_init();
(uint32_t)-1);
}
+ if (exporter->last_common_uid == 0) {
+ /* we're syncing all mails, so we can request the wanted
+ fields for all the mails */
+ wanted_fields = MAIL_FETCH_GUID | MAIL_FETCH_SAVE_DATE;
+ wanted_headers = exporter->wanted_headers;
+ }
+
exporter->trans = mailbox_transaction_begin(exporter->box, 0);
search_ctx = mailbox_search_init(exporter->trans, search_args, NULL,
- 0, NULL);
+ wanted_fields, wanted_headers);
mail_search_args_unref(&search_args);
while (mailbox_search_next(search_ctx, &mail)) {