Commit 0ea4a80b authored by Steve Holme's avatar Steve Holme
Browse files

smtp: Simplified the next RCPT TO logic

parent ed4ce23c
Loading
Loading
Loading
Loading
+21 −29
Original line number Diff line number Diff line
@@ -671,7 +671,6 @@ static CURLcode smtp_perform_rcpt_to(struct connectdata *conn)
  struct SMTP *smtp = data->req.protop;

  /* Send the RCPT TO command */
  if(smtp->rcpt) {
  if(smtp->rcpt->data[0] == '<')
    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "RCPT TO:%s",
                            smtp->rcpt->data);
@@ -680,7 +679,6 @@ static CURLcode smtp_perform_rcpt_to(struct connectdata *conn)
                            smtp->rcpt->data);
  if(!result)
    state(conn, SMTP_RCPT);
  }

  return result;
}
@@ -1324,11 +1322,9 @@ static CURLcode smtp_state_mail_resp(struct connectdata *conn, int smtpcode,
    result = CURLE_SEND_ERROR;
    state(conn, SMTP_STOP);
  }
  else {
    smtp->rcpt = data->set.mail_rcpt;

  else
    /* Start the RCPT TO command */
    result = smtp_perform_rcpt_to(conn);
  }

  return result;
}
@@ -1349,15 +1345,12 @@ static CURLcode smtp_state_rcpt_resp(struct connectdata *conn, int smtpcode,
    state(conn, SMTP_STOP);
  }
  else {
    if(smtp->rcpt) {
    smtp->rcpt = smtp->rcpt->next;
      result = smtp_perform_rcpt_to(conn);

      /* If we failed or still are sending RCPT data then return */
      if(result || smtp->rcpt)
        return result;
    }

    if(smtp->rcpt)
      /* Send the next RCPT TO command */
      result = smtp_perform_rcpt_to(conn);
    else
      /* Send the DATA command */
      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "DATA");

@@ -1747,17 +1740,16 @@ static CURLcode smtp_perform(struct connectdata *conn, bool *connected,

  *dophase_done = FALSE; /* not done yet */

  /* Store the first recipient (or NULL if not specified) */
  smtp->rcpt = data->set.mail_rcpt;

  /* Start the first command in the DO phase */
  if(data->set.upload && data->set.mail_rcpt)
    /* MAIL transfer */
    result = smtp_perform_mail(conn);
  else {
    /* Store the first recipient (or NULL if not specified) */
    smtp->rcpt = data->set.mail_rcpt;

  else
    /* SMTP based command (VRFY, EXPN, NOOP, RSET or HELP) */
    result = smtp_perform_command(conn);
  }

  if(result)
    return result;