smtp: Fixed an issue when processing EHLO failure responses (Part 2)

Follow up fix to commit 23d17190ee as EHLO capabilities can exist
within a positive response line.
This commit is contained in:
Steve Holme 2013-02-09 14:32:20 +00:00
parent f0bfc0fbd7
commit 62bd217464

View File

@ -213,19 +213,18 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
size_t len = strlen(pp->linestart_resp);
struct connectdata *conn = pp->conn;
struct smtp_conn *smtpc = &conn->proto.smtpc;
int result = FALSE;
size_t wordlen;
if(len < 4 || !ISDIGIT(line[0]) || !ISDIGIT(line[1]) || !ISDIGIT(line[2]))
return FALSE; /* Nothing for us */
/* Do we have a command response? */
if(line[3] == ' ') {
if((result = (line[3] == ' ')) != 0)
*resp = curlx_sltosi(strtol(line, NULL, 10));
return TRUE;
}
/* Are we processing EHLO command data? */
if(smtpc->state == SMTP_EHLO) {
if(smtpc->state == SMTP_EHLO && (!result || (result && *resp == 250))) {
line += 4;
len -= 4;
@ -281,7 +280,7 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
}
}
return FALSE;
return result;
}
/* This is the ONLY way to change SMTP state! */