]> granicus.if.org Git - curl/commitdiff
smtp: Fixed an issue when processing EHLO failure responses
authorSteve Holme <steve_holme@hotmail.com>
Sat, 9 Feb 2013 00:22:25 +0000 (00:22 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sat, 9 Feb 2013 00:22:25 +0000 (00:22 +0000)
Fixed a small issue where smtp_endofresp() would look for capabilities
in the description part of a failure response. In theory a server
shouldn't respond with SIZE or AUTH in an EHLO command's failure
response but if it did then capabilities would be unnecessarily set
before eventually failing.

lib/smtp.c

index 86d45d12c655a038319e207188186751c89affa0..c967bbd6803f18351144dca55b3be7eb1f6a319b 100644 (file)
@@ -213,17 +213,18 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
   size_t len = pp->nread_resp;
   struct connectdata *conn = pp->conn;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
-  int result;
   size_t wordlen;
 
   if(len < 4 || !ISDIGIT(line[0]) || !ISDIGIT(line[1]) || !ISDIGIT(line[2]))
     return FALSE;       /* Nothing for us */
 
-  /* Extract the response code if necessary */
-  if((result = (line[3] == ' ')) != 0)
+  /* Do we have a command response? */
+  if(line[3] == ' ') {
     *resp = curlx_sltosi(strtol(line, NULL, 10));
+    return TRUE;
+  }
 
-  /* Are we processing EHLO command responses? */
+  /* Are we processing EHLO command data? */
   if(smtpc->state == SMTP_EHLO) {
     line += 4;
     len -= 4;
@@ -276,7 +277,7 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
     }
   }
 
-  return result;
+  return FALSE;
 }
 
 /* This is the ONLY way to change SMTP state! */