Mercurial > dovecot > original-hg > dovecot-1.2
changeset 7066:048325df1ec4 HEAD
If MAILBOX_SYNC_FLAG_FULL_READ flag is set (SELECT and CHECK IMAP commands),
make sure we refresh maildirs with delayed syncs.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 29 Dec 2007 19:10:35 +0200 |
parents | 04e048fcd6d7 |
children | 7999ce2bb43a |
files | src/lib-storage/index/maildir/maildir-sync.c |
diffstat | 1 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-sync.c Sat Dec 29 18:59:34 2007 +0200 +++ b/src/lib-storage/index/maildir/maildir-sync.c Sat Dec 29 19:10:35 2007 +0200 @@ -536,7 +536,7 @@ return 0; } -static int maildir_sync_quick_check(struct maildir_mailbox *mbox, +static int maildir_sync_quick_check(struct maildir_mailbox *mbox, bool undirty, const char *new_dir, const char *cur_dir, bool *new_changed_r, bool *cur_changed_r) { @@ -550,7 +550,8 @@ #define DIR_DELAYED_REFRESH(hdr, name) \ ((hdr)->name ## _check_time <= \ (hdr)->name ## _mtime + MAILDIR_SYNC_SECS && \ - (time_t)(hdr)->name ## _check_time < ioloop_time - MAILDIR_SYNC_SECS) + (undirty || \ + (time_t)(hdr)->name ## _check_time < ioloop_time - MAILDIR_SYNC_SECS)) #define DIR_MTIME_CHANGED(st, hdr, name) \ ((st).st_mtime != (time_t)(hdr)->name ## _mtime || \ @@ -660,8 +661,10 @@ bool *new_changed_r, bool *cur_changed_r) { enum mail_index_sync_flags flags = 0; + bool undirty = (ctx->flags & MAILBOX_SYNC_FLAG_FULL_READ) != 0; - if (maildir_sync_quick_check(ctx->mbox, ctx->new_dir, ctx->cur_dir, + if (maildir_sync_quick_check(ctx->mbox, undirty, + ctx->new_dir, ctx->cur_dir, new_changed_r, cur_changed_r) < 0) return -1; @@ -903,7 +906,7 @@ new_dir = t_strconcat(mbox->path, "/new", NULL); cur_dir = t_strconcat(mbox->path, "/cur", NULL); - ret = maildir_sync_quick_check(mbox, new_dir, cur_dir, + ret = maildir_sync_quick_check(mbox, FALSE, new_dir, cur_dir, &new_changed, &cur_changed); } T_FRAME_END; return ret < 0 ? -1 : (!new_changed && !cur_changed);