return FALSE;
}
- if (pos == hdr->full_value_len)
- return TRUE;
-
- // FIXME: save keywords
-
if (ctx->sync_ctx->base_uid_validity == 0) {
ctx->sync_ctx->base_uid_validity = uid_validity;
ctx->sync_ctx->base_uid_last = uid_last;
ctx->hdr_pos[MBOX_HDR_X_IMAPBASE] = str_len(ctx->header);
ctx->seen_imapbase = TRUE;
+
+ if (pos == hdr->full_value_len)
+ return TRUE;
+
+ // FIXME: save keywords
+
return TRUE;
}
ret = -1;
break;
}
- sync_ctx.base_uid_validity = hdr->uid_validity;
+ sync_ctx.base_uid_validity =
+ hdr->uid_validity == 0 ? (uint32_t)ioloop_time :
+ hdr->uid_validity;
}
if ((mail_ctx.need_rewrite ||
if (mail_index_get_header(sync_view, &hdr) < 0)
ret = -1;
+
+ if (sync_ctx.base_uid_validity != hdr->uid_validity) {
+ mail_index_update_header(t,
+ offsetof(struct mail_index_header, uid_validity),
+ &sync_ctx.base_uid_validity,
+ sizeof(sync_ctx.base_uid_validity));
+ }
+ if (sync_ctx.next_uid != hdr->next_uid) {
+ mail_index_update_header(t,
+ offsetof(struct mail_index_header, next_uid),
+ &sync_ctx.next_uid, sizeof(sync_ctx.next_uid));
+ }
+
if ((uint32_t)st.st_mtime != hdr->sync_stamp) {
uint32_t sync_stamp = st.st_mtime;