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:
František Kučera
2012-09-02 10:53:27 +02:00
committed by Daniel Stenberg
parent da0d15733c
commit 0a0f3c63a6
2 changed files with 8 additions and 1 deletions

View File

@@ -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) {