]> granicus.if.org Git - curl/commitdiff
pop3: Differentiate between success and continuation responses
authorSteve Holme <steve_holme@hotmail.com>
Fri, 20 Nov 2015 07:01:01 +0000 (07:01 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Fri, 20 Nov 2015 07:01:01 +0000 (07:01 +0000)
lib/pop3.c

index dd4a32b2fb8f61e4b5e89428fc325ad560aba7b6..b96baf609b1c11f70378d95a57ec17031d73c941 100644 (file)
@@ -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 */
 }