isync

mailbox synchronization program
git clone https://git.code.sf.net/p/isync/isync
Log | Files | Refs | README | LICENSE

commit 4842f5148da89e7627f1b0c38f920d0fce992e76
parent 2fa75cf159d18c5705a877690b62f9e5de160c81
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date:   Sat, 21 Mar 2015 12:18:56 +0100

fix bogus "unexpected command continuation request"

it helps if the code actually does what the comment above it claims.
clarify it a bit, so i don't get stupid ideas again.

This reverts commit cf6a7b4d182d2fe82f7371af9e5a857818f3d02d.

Diffstat:
Msrc/drv_imap.c | 7++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/drv_imap.c b/src/drv_imap.c @@ -1241,9 +1241,10 @@ imap_socket_read( void *aux ) error( "IMAP error: unexpected reply: %s %s\n", arg, cmd ? cmd : "" ); break; /* this may mean anything, so prefer not to spam the log */ } else if (*arg == '+') { - /* This can happen only with the last command underway, as - it enforces a round-trip. */ - cmdp = ctx->in_progress; + /* There can be any number of commands in flight, but only the last + * one can require a continuation, as it enforces a round-trip. */ + cmdp = (struct imap_cmd *)((char *)ctx->in_progress_append - + offsetof(struct imap_cmd, next)); if (cmdp->param.data) { if (cmdp->param.to_trash) ctx->trashnc = TrashKnown; /* Can't get NO [TRYCREATE] any more. */