dovecot-2.0: dsync: Fixed iterating through mailboxes when using...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Jan 5 18:11:08 EET 2011
details: http://hg.dovecot.org/dovecot-2.0/rev/b32e7bc87a09
changeset: 12550:b32e7bc87a09
user: Timo Sirainen <tss at iki.fi>
date: Wed Jan 05 18:11:04 2011 +0200
description:
dsync: Fixed iterating through mailboxes when using proxy.
This fixes "Unexpected reply from server: +" errors.
diffstat:
src/dsync/dsync-brain-msgs.c | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diffs (32 lines):
diff -r 89f4e4cdbeac -r b32e7bc87a09 src/dsync/dsync-brain-msgs.c
--- a/src/dsync/dsync-brain-msgs.c Tue Jan 04 13:57:33 2011 +0200
+++ b/src/dsync/dsync-brain-msgs.c Wed Jan 05 18:11:04 2011 +0200
@@ -112,17 +112,23 @@
static int dsync_brain_msg_iter_next_pair(struct dsync_brain_mailbox_sync *sync)
{
- int ret;
+ int ret1, ret2;
if (sync->skip_mailbox) {
if (dsync_brain_msg_iter_skip_mailbox(sync) == 0)
return 0;
}
- if ((ret = dsync_brain_msg_iter_next(sync->src_msg_iter)) <= 0)
- return ret;
- if ((ret = dsync_brain_msg_iter_next(sync->dest_msg_iter)) <= 0)
- return ret;
+ ret1 = dsync_brain_msg_iter_next(sync->src_msg_iter);
+ ret2 = dsync_brain_msg_iter_next(sync->dest_msg_iter);
+ if (ret1 == 0 || ret2 == 0) {
+ /* make sure we iterate through everything in both iterators
+ (even if it might not seem necessary, because proxy
+ requires it) */
+ return 0;
+ }
+ if (ret1 < 0 || ret2 < 0)
+ return -1;
return 1;
}
More information about the dovecot-cvs
mailing list