changeset 12685:b32e7bc87a09

dsync: Fixed iterating through mailboxes when using proxy. This fixes "Unexpected reply from server: +" errors.
author Timo Sirainen <tss@iki.fi>
date Wed, 05 Jan 2011 18:11:04 +0200
parents 89f4e4cdbeac
children 39f5ef8d612c
files src/dsync/dsync-brain-msgs.c
diffstat 1 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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;
 }