diff options
author | Daniel Stenberg <daniel@haxx.se> | 2011-03-15 10:02:05 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2011-03-15 10:02:05 +0100 |
commit | cc228ea6f61a4543cbec3568b37bf881ab1010ac (patch) | |
tree | f65d5ef31d767ceb451dc2901ef6ad7d34b8ed1e | |
parent | 211504ba8a31d0696f728eed167b083f0c0f474d (diff) |
protocol handler cleanup: SSL awareness
As a follow-up to commit 8831000bc0: don't assume that the SSL powered
protocol alternatives are available.
-rw-r--r-- | lib/imap.c | 13 | ||||
-rw-r--r-- | lib/pop3.c | 11 | ||||
-rw-r--r-- | lib/smtp.c | 11 |
3 files changed, 31 insertions, 4 deletions
diff --git a/lib/imap.c b/lib/imap.c index 6ba665770..c0406ea42 100644 --- a/lib/imap.c +++ b/lib/imap.c @@ -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); } diff --git a/lib/pop3.c b/lib/pop3.c index a5447e4f3..d6e63035b 100644 --- a/lib/pop3.c +++ b/lib/pop3.c @@ -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); } } diff --git a/lib/smtp.c b/lib/smtp.c index ff0d288c7..71a9c6e8a 100644 --- a/lib/smtp.c +++ b/lib/smtp.c @@ -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); } } |