1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 08:08:50 -05:00

protocol handler cleanup: SSL awareness

As a follow-up to commit 8831000bc0: don't assume that the SSL powered
protocol alternatives are available.
This commit is contained in:
Daniel Stenberg 2011-03-15 10:02:05 +01:00
parent 211504ba8a
commit cc228ea6f6
3 changed files with 31 additions and 4 deletions

View File

@ -334,6 +334,15 @@ static CURLcode imap_state_login(struct connectdata *conn)
return CURLE_OK; 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 */ /* for STARTTLS responses */
static CURLcode imap_state_starttls_resp(struct connectdata *conn, static CURLcode imap_state_starttls_resp(struct connectdata *conn,
int imapcode, int imapcode,
@ -355,7 +364,7 @@ static CURLcode imap_state_starttls_resp(struct connectdata *conn,
else { else {
result = Curl_ssl_connect(conn, FIRSTSOCKET); result = Curl_ssl_connect(conn, FIRSTSOCKET);
if(CURLE_OK == result) { if(CURLE_OK == result) {
conn->handler = &Curl_handler_imaps; imap_to_imaps(conn);
result = imap_state_login(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); result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &imapc->ssldone);
if(imapc->ssldone) { if(imapc->ssldone) {
conn->handler = &Curl_handler_imaps; imap_to_imaps(conn);
result = imap_state_login(conn); result = imap_state_login(conn);
state(conn, IMAP_STOP); state(conn, IMAP_STOP);
} }

View File

@ -275,6 +275,15 @@ static int pop3_getsock(struct connectdata *conn,
return Curl_pp_getsock(&conn->proto.pop3c.pp, socks, numsocks); 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 */ /* for STARTTLS responses */
static CURLcode pop3_state_starttls_resp(struct connectdata *conn, static CURLcode pop3_state_starttls_resp(struct connectdata *conn,
int pop3code, int pop3code,
@ -292,7 +301,7 @@ static CURLcode pop3_state_starttls_resp(struct connectdata *conn,
/* Curl_ssl_connect is BLOCKING */ /* Curl_ssl_connect is BLOCKING */
result = Curl_ssl_connect(conn, FIRSTSOCKET); result = Curl_ssl_connect(conn, FIRSTSOCKET);
if(CURLE_OK == result) { if(CURLE_OK == result) {
conn->handler = &Curl_handler_pop3s; pop3_to_pop3s(conn);
result = pop3_state_user(conn); result = pop3_state_user(conn);
} }
} }

View File

@ -454,6 +454,15 @@ static int smtp_getsock(struct connectdata *conn,
return Curl_pp_getsock(&conn->proto.smtpc.pp, socks, numsocks); 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 */ /* for STARTTLS responses */
static CURLcode smtp_state_starttls_resp(struct connectdata *conn, static CURLcode smtp_state_starttls_resp(struct connectdata *conn,
int smtpcode, int smtpcode,
@ -475,7 +484,7 @@ static CURLcode smtp_state_starttls_resp(struct connectdata *conn,
/* Curl_ssl_connect is BLOCKING */ /* Curl_ssl_connect is BLOCKING */
result = Curl_ssl_connect(conn, FIRSTSOCKET); result = Curl_ssl_connect(conn, FIRSTSOCKET);
if(CURLE_OK == result) { if(CURLE_OK == result) {
conn->handler = &Curl_handler_smtps; smtp_to_smtps(conn);
result = smtp_state_ehlo(conn); result = smtp_state_ehlo(conn);
} }
} }