aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/smtp.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/smtp.c b/lib/smtp.c
index 9643f8f9a..2433a6447 100644
--- a/lib/smtp.c
+++ b/lib/smtp.c
@@ -226,11 +226,13 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
line += 4;
len -= 4;
+ /* Do we have a SIZE capability? */
if(smtpc->state == SMTP_EHLO && len >= 4 && !memcmp(line, "SIZE", 4)) {
DEBUGF(infof(conn->data, "Server supports SIZE extension.\n"));
smtpc->size_supported = true;
}
+ /* Do we have an AUTH capability? */
if(smtpc->state == SMTP_EHLO && len >= 5 && !memcmp(line, "AUTH ", 5)) {
line += 5;
len -= 5;
@@ -246,11 +248,13 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
if(!len)
break;
+ /* Extract the word */
for(wordlen = 0; wordlen < len && line[wordlen] != ' ' &&
line[wordlen] != '\t' && line[wordlen] != '\r' &&
line[wordlen] != '\n';)
wordlen++;
+ /* Test the word for a matching authentication mechanism */
if(wordlen == 5 && !memcmp(line, "LOGIN", 5))
smtpc->authmechs |= SASL_MECH_LOGIN;
else if(wordlen == 5 && !memcmp(line, "PLAIN", 5))