Commit 45ca048f authored by Ben Noordhuis's avatar Ben Noordhuis
Browse files

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

parent c4369f34
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -588,7 +588,14 @@ static CURLcode imap_multi_statemach(struct connectdata *conn,
                                         bool *done)
{
  struct imap_conn *imapc = &conn->proto.imapc;
  CURLcode result = Curl_pp_multi_statemach(&imapc->pp);
  CURLcode result;

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

  *done = (bool)(imapc->state == IMAP_STOP);

@@ -700,7 +707,7 @@ static CURLcode imap_connect(struct connectdata *conn,
  }
#endif /* !CURL_DISABLE_HTTP && !CURL_DISABLE_PROXY */

  if(conn->protocol & PROT_IMAPS) {
  if((conn->protocol & PROT_IMAPS) && data->state.used_interface != Curl_if_multi) {
    /* BLOCKING */
    /* IMAPS is simply imap with SSL for the control channel */
    /* now, perform the SSL initialization for this socket */
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ struct imap_conn {
  imapstate state; /* always use imap.c:state() to change state! */
  int cmdid;       /* id number/index */
  const char *idstr; /* pointer to a string for which to wait for as id */
  bool ssldone;      /* is connect() over SSL done? only relevant in multi mode */
};

extern const struct Curl_handler Curl_handler_imap;