mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
smtp: Fixed an issue with the multi-interface always sending postdata
Due to the result code being reset to CURLE_OK when smtp_dophase_done() was called, postdata would incorrectly be sent to the server when the MAIL FROM or RCPT command was rejected. As such, libcurl would return the wrong result code from performing the operation and additionally set CURLINFO_RESPONSE_CODE to be that returned by the postdata command. Bug: http://curl.haxx.se/mail/lib-2012-05/0108.html Reported by: Gokhan Sengun
This commit is contained in:
parent
b1f081f6e6
commit
ef60fdbd73
13
lib/smtp.c
13
lib/smtp.c
@ -1840,14 +1840,15 @@ static CURLcode smtp_dophase_done(struct connectdata *conn, bool connected)
|
|||||||
/* called from multi.c while DOing */
|
/* called from multi.c while DOing */
|
||||||
static CURLcode smtp_doing(struct connectdata *conn, bool *dophase_done)
|
static CURLcode smtp_doing(struct connectdata *conn, bool *dophase_done)
|
||||||
{
|
{
|
||||||
CURLcode result;
|
CURLcode result = smtp_multi_statemach(conn, dophase_done);
|
||||||
result = smtp_multi_statemach(conn, dophase_done);
|
|
||||||
|
|
||||||
if(*dophase_done) {
|
|
||||||
result = smtp_dophase_done(conn, FALSE /* not connected */);
|
|
||||||
|
|
||||||
|
if(result)
|
||||||
|
DEBUGF(infof(conn->data, "DO phase failed\n"));
|
||||||
|
else
|
||||||
DEBUGF(infof(conn->data, "DO phase is complete\n"));
|
DEBUGF(infof(conn->data, "DO phase is complete\n"));
|
||||||
}
|
|
||||||
|
if(*dophase_done)
|
||||||
|
smtp_dophase_done(conn, FALSE /* not connected */);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user