]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
smtp: Post SMTP command expansion tidy up
authorSteve Holme <steve_holme@hotmail.com>
Sat, 23 Nov 2013 09:35:35 +0000 (09:35 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sat, 23 Nov 2013 09:35:44 +0000 (09:35 +0000)
Removed unnecessary SMTP_STOP state changes on failure.

Removed hard return on failure in smtp_state_data_resp().

lib/smtp.c

index aa3ff326a07aeddce26fd800c400557cd1042a0a..711d3e09f1b10b89fe24e8d296c2b63bb50c1325 100644 (file)
@@ -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