Commit cc228ea6 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

protocol handler cleanup: SSL awareness

As a follow-up to commit 8831000b: don't assume that the SSL powered
protocol alternatives are available.
parent 211504ba
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -334,6 +334,15 @@ static CURLcode imap_state_login(struct connectdata *conn)
  return CURLE_OK;
}

#ifdef USE_SSL
static void imap_to_imaps(struct connectdata *conn)
{
  conn->handler = &Curl_handler_imaps;
}
#else
#define imap_to_imaps(x)
#endif

/* for STARTTLS responses */
static CURLcode imap_state_starttls_resp(struct connectdata *conn,
                                         int imapcode,
@@ -355,7 +364,7 @@ static CURLcode imap_state_starttls_resp(struct connectdata *conn,
    else {
      result = Curl_ssl_connect(conn, FIRSTSOCKET);
      if(CURLE_OK == result) {
        conn->handler = &Curl_handler_imaps;
        imap_to_imaps(conn);
        result = imap_state_login(conn);
      }
    }
@@ -372,7 +381,7 @@ static CURLcode imap_state_upgrade_tls(struct connectdata *conn)
  result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &imapc->ssldone);

  if(imapc->ssldone) {
    conn->handler = &Curl_handler_imaps;
    imap_to_imaps(conn);
    result = imap_state_login(conn);
    state(conn, IMAP_STOP);
  }
+10 −1
Original line number Diff line number Diff line
@@ -275,6 +275,15 @@ static int pop3_getsock(struct connectdata *conn,
  return Curl_pp_getsock(&conn->proto.pop3c.pp, socks, numsocks);
}

#ifdef USE_SSL
static void pop3_to_pop3s(struct connectdata *conn)
{
  conn->handler = &Curl_handler_pop3s;
}
#else
#define pop3_to_pop3s(x)
#endif

/* for STARTTLS responses */
static CURLcode pop3_state_starttls_resp(struct connectdata *conn,
                                         int pop3code,
@@ -292,7 +301,7 @@ static CURLcode pop3_state_starttls_resp(struct connectdata *conn,
    /* Curl_ssl_connect is BLOCKING */
    result = Curl_ssl_connect(conn, FIRSTSOCKET);
    if(CURLE_OK == result) {
      conn->handler = &Curl_handler_pop3s;
      pop3_to_pop3s(conn);
      result = pop3_state_user(conn);
    }
  }
+10 −1
Original line number Diff line number Diff line
@@ -454,6 +454,15 @@ static int smtp_getsock(struct connectdata *conn,
  return Curl_pp_getsock(&conn->proto.smtpc.pp, socks, numsocks);
}

#ifdef USE_SSL
static void smtp_to_smtps(struct connectdata *conn)
{
  conn->handler = &Curl_handler_smtps;
}
#else
#define smtp_to_smtps(x)
#endif

/* for STARTTLS responses */
static CURLcode smtp_state_starttls_resp(struct connectdata *conn,
                                         int smtpcode,
@@ -475,7 +484,7 @@ static CURLcode smtp_state_starttls_resp(struct connectdata *conn,
    /* Curl_ssl_connect is BLOCKING */
    result = Curl_ssl_connect(conn, FIRSTSOCKET);
    if(CURLE_OK == result) {
      conn->handler = &Curl_handler_smtps;
      smtp_to_smtps(conn);
      result = smtp_state_ehlo(conn);
    }
  }