Commit 88e825de authored by Ben Noordhuis's avatar Ben Noordhuis Committed by Daniel Stenberg
Browse files

SMTP in multi mode: use Curl_ssl_connect_nonblocking() when connecting.

parent 14e8b13a
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -999,7 +999,14 @@ static CURLcode smtp_multi_statemach(struct connectdata *conn,
                                     bool *done)
{
  struct smtp_conn *smtpc = &conn->proto.smtpc;
  CURLcode result = Curl_pp_multi_statemach(&smtpc->pp);
  CURLcode result;

  if((conn->handler->protocol & CURLPROTO_SMTPS) && !smtpc->ssldone) {
    result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &smtpc->ssldone);
  }
  else {
    result = Curl_pp_multi_statemach(&smtpc->pp);
  }

  *done = (bool)(smtpc->state == SMTP_STOP);

@@ -1114,8 +1121,8 @@ static CURLcode smtp_connect(struct connectdata *conn,
  }
#endif /* !CURL_DISABLE_HTTP && !CURL_DISABLE_PROXY */

  if(conn->handler->protocol & CURLPROTO_SMTPS) {
    /* BLOCKING */
  if((conn->handler->protocol & CURLPROTO_SMTPS) &&
      data->state.used_interface != Curl_if_multi) {
    /* SMTPS is simply smtp with SSL for the control channel */
    /* now, perform the SSL initialization for this socket */
    result = Curl_ssl_connect(conn, FIRSTSOCKET);
+1 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ struct smtp_conn {
  unsigned int authmechs;       /* Accepted authentication methods. */
  smtpstate state; /* always use smtp.c:state() to change state! */
  struct curl_slist *rcpt;
  bool ssldone; /* is connect() over SSL done? only relevant in multi mode */
};

/* Authentication mechanism flags. */