mirror of
https://github.com/curl/curl.git
synced 2024-11-27 05:50:21 +08:00
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);
|
||||
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! */
|
||||
|
Loading…
Reference in New Issue
Block a user