dovecot-2.2: imap: Various fixes for handling expunges in mailbo...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Nov 6 22:15:58 EET 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/5089affc8ae5
changeset: 15386:5089affc8ae5
user: Timo Sirainen <tss at iki.fi>
date: Tue Nov 06 22:15:51 2012 +0200
description:
imap: Various fixes for handling expunges in mailbox sync.
diffstat:
src/imap/imap-sync.c | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diffs (61 lines):
diff -r 47085487f3d8 -r 5089affc8ae5 src/imap/imap-sync.c
--- a/src/imap/imap-sync.c Tue Nov 06 17:40:34 2012 +0200
+++ b/src/imap/imap-sync.c Tue Nov 06 22:15:51 2012 +0200
@@ -296,7 +296,7 @@
client->highest_fetch_modseq = 0;
}
-static int imap_sync_finish(struct imap_sync_context *ctx)
+static int imap_sync_finish(struct imap_sync_context *ctx, bool aborting)
{
struct client *client = ctx->client;
int ret = ctx->failed ? -1 : 0;
@@ -327,7 +327,7 @@
client_disconnect_with_error(client,
"Mailbox UIDVALIDITY changed");
}
- if (!ctx->no_newmail) {
+ if (!ctx->no_newmail && !aborting) {
if (ctx->status.messages < ctx->messages_count)
i_panic("Message count decreased");
if (ctx->status.messages != ctx->messages_count &&
@@ -371,7 +371,7 @@
{
int ret;
- ret = imap_sync_finish(ctx);
+ ret = imap_sync_finish(ctx, TRUE);
imap_client_notify_finished(ctx->client);
if ((ctx->client->enabled_features & MAILBOX_FEATURE_QRESYNC) != 0)
@@ -506,14 +506,14 @@
for (; ctx->seq >= ctx->sync_rec.seq1; ctx->seq--) {
if (ret == 0) {
/* buffer full, continue later */
- break;
+ return 0;
}
str_truncate(str, 0);
str_printfa(str, "* %u EXPUNGE", ctx->seq);
ret = client_send_line_next(ctx->client, str_c(str));
}
- return ret;
+ return 1;
}
int imap_sync_more(struct imap_sync_context *ctx)
@@ -613,10 +613,10 @@
ctx->seq = 0;
}
- if (array_is_created(&ctx->expunges))
- imap_sync_vanished(ctx);
if (ret > 0) {
- if (imap_sync_finish(ctx) < 0)
+ if (array_is_created(&ctx->expunges))
+ imap_sync_vanished(ctx);
+ if (imap_sync_finish(ctx, FALSE) < 0)
return -1;
return imap_sync_more(ctx);
}
More information about the dovecot-cvs
mailing list