From a1701eea289fe7ea80651f801cf992838a491dde Mon Sep 17 00:00:00 2001 From: Steve Holme Date: Sun, 10 Feb 2013 12:13:55 +0000 Subject: 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. --- lib/imap.c | 6 +++++- lib/imap.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'lib') 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 */ }; -- cgit v1.2.3