smtp: Fixed an issue when processing EHLO failure responses

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.
This commit is contained in:
Steve Holme 2013-02-09 00:22:25 +00:00
parent 21657823ea
commit 23d17190ee
1 changed files with 6 additions and 5 deletions

View 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! */