smtp: Added support for the STLS capability (Part One)
authorSteve Holme <steve_holme@hotmail.com>
Sun, 10 Feb 2013 12:19:10 +0000 (12:19 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sun, 10 Feb 2013 12:19:10 +0000 (12:19 +0000)
Introduced detection of the STARTTLS capability, in order to add support
for TLS upgrades without unconditionally sending the STARTTLS command.

lib/smtp.c
lib/smtp.h

index dd08575beb3adc5a67721d944006e024e49a4fd4..6b4f8855944cb95ab0c38e5a6118cb183442568e 100644 (file)
@@ -228,8 +228,12 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
     line += 4;
     len -= 4;
 
+    /* Does the server support the STARTTLS capability? */
+    if(len >= 8 && !memcmp(line, "STARTTLS", 8))
+      smtpc->tls_supported = TRUE;
+
     /* Does the server support the SIZE capability? */
-    if(len >= 4 && !memcmp(line, "SIZE", 4))
+    else if(len >= 4 && !memcmp(line, "SIZE", 4))
       smtpc->size_supported = TRUE;
 
     /* Do we have the authentication mechanism list? */
@@ -237,6 +241,7 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
       line += 5;
       len -= 5;
 
+      /* Loop through the data line */
       for(;;) {
         while(len &&
               (*line == ' ' || *line == '\t' ||
index cb3ef5854def95975571e08c8ccd83026ecc0ad1..514e6eb8a1b425b32dcdaf19dc895587a1d42d5c 100644 (file)
@@ -65,6 +65,7 @@ struct smtp_conn {
   smtpstate state;         /* Always use smtp.c:state() to change state! */
   struct curl_slist *rcpt; /* Recipient list */
   bool ssldone;            /* Is connect() over SSL done? */
+  bool tls_supported;      /* StartTLS capability supported by server */
   bool size_supported;     /* If server supports SIZE extension according to
                               RFC 1870 */
 };