aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Holme <steve_holme@hotmail.com>2013-02-10 12:13:55 +0000
committerSteve Holme <steve_holme@hotmail.com>2013-02-10 12:13:55 +0000
commita1701eea289fe7ea80651f801cf992838a491dde (patch)
treeb002c4af80f1296ef2b10c35fc30817dfb032935
parent8170d1f828e50f6badcc7902e557e105f73ccfdb (diff)
imap: Added support for the STARTTLS capability (Part One)
Introduced detection of the STARTTLS capability, in order to add support for TLS upgrades without unconditionally sending the STARTTLS command.
-rw-r--r--lib/imap.c6
-rw-r--r--lib/imap.h1
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/imap.c b/lib/imap.c
index 9310ee568..efc2f5c57 100644
--- a/lib/imap.c
+++ b/lib/imap.c
@@ -371,8 +371,12 @@ static int imap_endofresp(struct pingpong *pp, int *resp)
line[wordlen] != '\n';)
wordlen++;
+ /* Does the server support the STARTTLS capability? */
+ if(len >= 8 && !memcmp(line, "STARTTLS", 8))
+ imapc->tls_supported = TRUE;
+
/* Has the server explicitly disabled clear text authentication? */
- if(wordlen == 13 && !memcmp(line, "LOGINDISABLED", 13))
+ else if(wordlen == 13 && !memcmp(line, "LOGINDISABLED", 13))
imapc->login_disabled = TRUE;
/* Does the server support the SASL-IR capability? */
diff --git a/lib/imap.h b/lib/imap.h
index eeedcff17..a8164c084 100644
--- a/lib/imap.h
+++ b/lib/imap.h
@@ -62,6 +62,7 @@ struct imap_conn {
int cmdid; /* Last used command ID */
char resptag[5]; /* Response tag to wait for */
bool ssldone; /* Is connect() over SSL done? */
+ bool tls_supported; /* StartTLS capability supported by server */
bool login_disabled; /* LOGIN command explicitly disabled by server */
bool ir_supported; /* Initial response supported by server */
};