mirror of https://github.com/moparisthebest/curl
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:
parent
f0bfc0fbd7
commit
62bd217464
|
@ -213,19 +213,18 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
|
||||||
size_t len = strlen(pp->linestart_resp);
|
size_t len = strlen(pp->linestart_resp);
|
||||||
struct connectdata *conn = pp->conn;
|
struct connectdata *conn = pp->conn;
|
||||||
struct smtp_conn *smtpc = &conn->proto.smtpc;
|
struct smtp_conn *smtpc = &conn->proto.smtpc;
|
||||||
|
int result = FALSE;
|
||||||
size_t wordlen;
|
size_t wordlen;
|
||||||
|
|
||||||
if(len < 4 || !ISDIGIT(line[0]) || !ISDIGIT(line[1]) || !ISDIGIT(line[2]))
|
if(len < 4 || !ISDIGIT(line[0]) || !ISDIGIT(line[1]) || !ISDIGIT(line[2]))
|
||||||
return FALSE; /* Nothing for us */
|
return FALSE; /* Nothing for us */
|
||||||
|
|
||||||
/* Do we have a command response? */
|
/* Do we have a command response? */
|
||||||
if(line[3] == ' ') {
|
if((result = (line[3] == ' ')) != 0)
|
||||||
*resp = curlx_sltosi(strtol(line, NULL, 10));
|
*resp = curlx_sltosi(strtol(line, NULL, 10));
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Are we processing EHLO command data? */
|
/* Are we processing EHLO command data? */
|
||||||
if(smtpc->state == SMTP_EHLO) {
|
if(smtpc->state == SMTP_EHLO && (!result || (result && *resp == 250))) {
|
||||||
line += 4;
|
line += 4;
|
||||||
len -= 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! */
|
/* This is the ONLY way to change SMTP state! */
|
||||||
|
|
Loading…
Reference in New Issue