mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 16:18:48 -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:
parent
211504ba8a
commit
cc228ea6f6
13
lib/imap.c
13
lib/imap.c
@ -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);
|
||||||
}
|
}
|
||||||
|
11
lib/pop3.c
11
lib/pop3.c
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
11
lib/smtp.c
11
lib/smtp.c
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user