mirror of
https://github.com/curl/curl.git
synced 2026-07-02 15:17:17 +03:00
SMTP: only send SIZE if supported
SMTP client will send SIZE parameter in MAIL FROM command only if server supports it. Without this patch server might say "504 Command parameter not implemented" and reject the message. Bug: http://curl.haxx.se/bug/view.cgi?id=3564114
This commit is contained in:
parent
da0d15733c
commit
0a0f3c63a6
2 changed files with 8 additions and 1 deletions
|
|
@ -232,6 +232,11 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
|
|||
line += 4;
|
||||
len -= 4;
|
||||
|
||||
if(smtpc->state == SMTP_EHLO && len >= 4 && !memcmp(line, "SIZE", 4)) {
|
||||
DEBUGF(infof(conn->data, "Server supports SIZE extension.\n"));
|
||||
smtpc->size_supported = true;
|
||||
}
|
||||
|
||||
if(smtpc->state == SMTP_EHLO && len >= 5 && !memcmp(line, "AUTH ", 5)) {
|
||||
line += 5;
|
||||
len -= 5;
|
||||
|
|
@ -943,7 +948,7 @@ static CURLcode smtp_mail(struct connectdata *conn)
|
|||
}
|
||||
|
||||
/* calculate the optional SIZE parameter */
|
||||
if(conn->data->set.infilesize > 0) {
|
||||
if(conn->proto.smtpc.size_supported && conn->data->set.infilesize > 0) {
|
||||
size = aprintf("%" FORMAT_OFF_T, data->set.infilesize);
|
||||
|
||||
if(!size) {
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@ struct smtp_conn {
|
|||
struct curl_slist *rcpt; /* Recipient list */
|
||||
bool ssldone; /* Is connect() over SSL done? only relevant in
|
||||
multi mode */
|
||||
bool size_supported; /* If server supports SIZE extension according to
|
||||
RFC 1870 */
|
||||
};
|
||||
|
||||
extern const struct Curl_handler Curl_handler_smtp;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue