aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSteve Holme <steve_holme@hotmail.com>2013-02-06 20:02:36 +0000
committerSteve Holme <steve_holme@hotmail.com>2013-02-06 20:02:36 +0000
commitde0410fe9a6f8d5d24a90c12b0e7a335ad6a26b9 (patch)
treeb862341116c7a30a14a03715a064baba5f5eb7bc /lib
parent12dbb8aedc67c1e0df35964f8c151e487fc78f7f (diff)
email: Moved starttls code in separate functions
To help maintain the readability of the code in imap.c, pop3.c and smtp.c moved the starttls code into state_starttls() functions.
Diffstat (limited to 'lib')
-rw-r--r--lib/imap.c19
-rw-r--r--lib/pop3.c18
-rw-r--r--lib/smtp.c17
3 files changed, 43 insertions, 11 deletions
diff --git a/lib/imap.c b/lib/imap.c
index 72ec871f9..c7e138d12 100644
--- a/lib/imap.c
+++ b/lib/imap.c
@@ -459,6 +459,20 @@ static void state(struct connectdata *conn, imapstate newstate)
imapc->state = newstate;
}
+static CURLcode imap_state_starttls(struct connectdata *conn)
+{
+ CURLcode result = CURLE_OK;
+ const char *str = getcmdid(conn);
+
+ /* Send the STARTTLS command */
+ result = imap_sendf(conn, str, "%s STARTTLS", str);
+
+ if(!result)
+ state(conn, IMAP_STARTTLS);
+
+ return result;
+}
+
static CURLcode imap_state_capability(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
@@ -608,10 +622,7 @@ static CURLcode imap_state_servergreet_resp(struct connectdata *conn,
if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
/* We don't have a SSL/TLS connection yet, but SSL is requested. Switch
to TLS connection now */
- const char *str = getcmdid(conn);
- result = imap_sendf(conn, str, "%s STARTTLS", str);
- if(!result)
- state(conn, IMAP_STARTTLS);
+ result = imap_state_starttls(conn);
}
else
result = imap_state_capability(conn);
diff --git a/lib/pop3.c b/lib/pop3.c
index f0c6155c0..a268d399c 100644
--- a/lib/pop3.c
+++ b/lib/pop3.c
@@ -372,6 +372,19 @@ static void state(struct connectdata *conn, pop3state newstate)
pop3c->state = newstate;
}
+static CURLcode pop3_state_starttls(struct connectdata *conn)
+{
+ CURLcode result = CURLE_OK;
+
+ /* Send the STLS command */
+ result = Curl_pp_sendf(&conn->proto.pop3c.pp, "STLS");
+
+ if(!result)
+ state(conn, POP3_STARTTLS);
+
+ return result;
+}
+
static CURLcode pop3_state_capa(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
@@ -541,7 +554,6 @@ static CURLcode pop3_state_servergreet_resp(struct connectdata *conn,
{
CURLcode result = CURLE_OK;
struct SessionHandle *data = conn->data;
- struct pop3_conn *pop3c = &conn->proto.pop3c;
(void)instate; /* no use for this yet */
@@ -553,9 +565,7 @@ static CURLcode pop3_state_servergreet_resp(struct connectdata *conn,
if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
/* We don't have a SSL/TLS connection yet, but SSL is requested. Switch
to TLS connection now */
- result = Curl_pp_sendf(&pop3c->pp, "STLS");
- if(!result)
- state(conn, POP3_STARTTLS);
+ result = pop3_state_starttls(conn);
}
else
result = pop3_state_capa(conn);
diff --git a/lib/smtp.c b/lib/smtp.c
index d2d4aeb14..26b2bd0dd 100644
--- a/lib/smtp.c
+++ b/lib/smtp.c
@@ -355,6 +355,19 @@ static CURLcode smtp_state_helo(struct connectdata *conn)
return CURLE_OK;
}
+static CURLcode smtp_state_starttls(struct connectdata *conn)
+{
+ CURLcode result = CURLE_OK;
+
+ /* Send the STARTTLS command */
+ result = Curl_pp_sendf(&conn->proto.smtpc.pp, "STARTTLS");
+
+ if(!result)
+ state(conn, SMTP_STARTTLS);
+
+ return result;
+}
+
static CURLcode smtp_authenticate(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
@@ -545,9 +558,7 @@ static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
else if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
/* We don't have a SSL/TLS connection yet, but SSL is requested. Switch
to TLS connection now */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "STARTTLS");
- if(!result)
- state(conn, SMTP_STARTTLS);
+ result = smtp_state_starttls(conn);
}
else
result = smtp_authenticate(conn);