diff options
| -rw-r--r-- | lib/smtp.c | 24 | 
1 files changed, 12 insertions, 12 deletions
diff --git a/lib/smtp.c b/lib/smtp.c index aa3ff326a..711d3e09f 100644 --- a/lib/smtp.c +++ b/lib/smtp.c @@ -1319,7 +1319,6 @@ static CURLcode smtp_state_mail_resp(struct connectdata *conn, int smtpcode,    if(smtpcode/100 != 2) {      failf(data, "MAIL failed: %d", smtpcode);      result = CURLE_SEND_ERROR; -    state(conn, SMTP_STOP);    }    else      /* Start the RCPT TO command */ @@ -1341,7 +1340,6 @@ static CURLcode smtp_state_rcpt_resp(struct connectdata *conn, int smtpcode,    if(smtpcode/100 != 2) {      failf(data, "RCPT failed: %d", smtpcode);      result = CURLE_SEND_ERROR; -    state(conn, SMTP_STOP);    }    else {      smtp->rcpt = smtp->rcpt->next; @@ -1365,25 +1363,27 @@ static CURLcode smtp_state_rcpt_resp(struct connectdata *conn, int smtpcode,  static CURLcode smtp_state_data_resp(struct connectdata *conn, int smtpcode,                                       smtpstate instate)  { +  CURLcode result = CURLE_OK;    struct SessionHandle *data = conn->data;    (void)instate; /* no use for this yet */    if(smtpcode != 354) { -    state(conn, SMTP_STOP); -    return CURLE_SEND_ERROR; +    failf(data, "DATA failed: %d", smtpcode); +    result = CURLE_SEND_ERROR;    } +  else { +    /* Set the progress upload size */ +    Curl_pgrsSetUploadSize(data, data->set.infilesize); -  /* Set the progress upload size */ -  Curl_pgrsSetUploadSize(data, data->set.infilesize); - -  /* SMTP upload */ -  Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL); +    /* SMTP upload */ +    Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL); -  /* End of DO phase */ -  state(conn, SMTP_STOP); +    /* End of DO phase */ +    state(conn, SMTP_STOP); +  } -  return CURLE_OK; +  return result;  }  /* For POSTDATA responses, which are received after the entire DATA  | 
