if (!box->opened) {
if (mailbox_open(box) < 0)
return -1;
+ }
+ if (!box->synced) {
if (mailbox_sync(box, 0) < 0)
return -1;
}
if (mailbox_open(box) < 0)
return -1;
}
+ if (!box->synced && (items & MAILBOX_METADATA_SYNC_ITEMS) != 0) {
+ if (mailbox_sync(box, 0) < 0)
+ return -1;
+ }
if ((items & MAILBOX_METADATA_VIRTUAL_SIZE) != 0) {
if (get_metadata_virtual_size(box, metadata_r) < 0)
MAILBOX_METADATA_CACHE_FIELDS = 0x04,
MAILBOX_METADATA_PRECACHE_FIELDS = 0x08,
MAILBOX_METADATA_BACKEND_NAMESPACE = 0x10
+ /* metadata items that require mailbox to be synced at least once. */
+#define MAILBOX_METADATA_SYNC_ITEMS \
+ (MAILBOX_METADATA_GUID | MAILBOX_METADATA_VIRTUAL_SIZE)
};
enum mailbox_search_result_flags {