Mercurial > dovecot > core-2.2
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; }