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