diff options
| -rw-r--r-- | lib/imap.c | 20 | 
1 files changed, 19 insertions, 1 deletions
| diff --git a/lib/imap.c b/lib/imap.c index 7d978b634..d135ba916 100644 --- a/lib/imap.c +++ b/lib/imap.c @@ -356,7 +356,25 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,    /* Do we have a continuation response? */    if((len == 3 && !memcmp("+", line, 1)) ||       (len >= 2 && !memcmp("+ ", line, 2))) { -    *resp = '+'; +    switch(imapc->state) { +      /* States which are interested in continuation responses */ +      case IMAP_AUTHENTICATE_PLAIN: +      case IMAP_AUTHENTICATE_LOGIN: +      case IMAP_AUTHENTICATE_LOGIN_PASSWD: +      case IMAP_AUTHENTICATE_CRAMMD5: +      case IMAP_AUTHENTICATE_DIGESTMD5: +      case IMAP_AUTHENTICATE_DIGESTMD5_RESP: +      case IMAP_AUTHENTICATE_NTLM: +      case IMAP_AUTHENTICATE_NTLM_TYPE2MSG: +      case IMAP_AUTHENTICATE: +        *resp = '+'; +        break; + +      default: +        failf(conn->data, "Unexpected continuation response"); +        *resp = -1; +        break; +    }      return TRUE;    } | 
