Commit 41efdadf authored by Steve Holme's avatar Steve Holme
Browse files

pop3: Differentiate between success and continuation responses

parent 6af80afe
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -214,7 +214,7 @@ static const struct Curl_handler Curl_handler_pop3s_proxy = {
/* SASL parameters for the pop3 protocol */
static const struct SASLproto saslpop3 = {
  "pop",                      /* The service name */
  '+',                        /* Code received when continuation is expected */
  '*',                        /* Code received when continuation is expected */
  '+',                        /* Code to receive upon authentication success */
  255 - 8,                    /* Maximum initial response length (no max) */
  pop3_perform_auth,          /* Send authentication command */
@@ -265,14 +265,20 @@ static bool pop3_endofresp(struct connectdata *conn, char *line, size_t len,
    return TRUE;
  }

  /* Do we have a success or continuation response? */
  if((len >= 3 && !memcmp("+OK", line, 3)) ||
     (len >= 1 && !memcmp("+", line, 1))) {
  /* Do we have a success response? */
  if(len >= 3 && !memcmp("+OK", line, 3)) {
    *resp = '+';

    return TRUE;
  }

  /* Do we have a continuation response? */
  if(len >= 1 && !memcmp("+", line, 1)) {
    *resp = '*';

    return TRUE;
  }

  return FALSE; /* Nothing for us */
}