Commit 0a0f3c63 authored by František Kučera's avatar František Kučera Committed by Daniel Stenberg
Browse files

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
parent da0d1573
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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) {
+2 −0
Original line number Diff line number Diff line
@@ -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;