changeset 4411:a2420b745cd5 HEAD

Added support for SASL-IR extension.
author Timo Sirainen <tss@iki.fi>
date Sat, 17 Jun 2006 20:19:29 +0300
parents 46710be9f4bf
children 521d07f9c247
files configure.in src/imap-login/client-authenticate.c
diffstat 2 files changed, 9 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/configure.in	Sat Jun 17 20:11:30 2006 +0300
+++ b/configure.in	Sat Jun 17 20:19:29 2006 +0300
@@ -1700,7 +1700,7 @@
 dnl ** capabilities
 dnl **
 
-capability="IMAP4rev1 SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS"
+capability="IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS"
 AC_DEFINE_UNQUOTED(CAPABILITY_STRING, "$capability", IMAP capabilities)
 
 CFLAGS="$CFLAGS $EXTRA_CFLAGS"
--- a/src/imap-login/client-authenticate.c	Sat Jun 17 20:11:30 2006 +0300
+++ b/src/imap-login/client-authenticate.c	Sat Jun 17 20:19:29 2006 +0300
@@ -238,16 +238,20 @@
 	/* we want only one argument: authentication mechanism name */
 	if (args[0].type != IMAP_ARG_ATOM && args[0].type != IMAP_ARG_STRING)
 		return -1;
-	if (args[1].type != IMAP_ARG_EOL)
-		return -1;
+	if (args[1].type != IMAP_ARG_EOL) {
+		/* optional SASL initial response */
+		if (args[1].type != IMAP_ARG_ATOM ||
+		    args[2].type != IMAP_ARG_EOL)
+			return -1;
+	}
 
 	mech_name = IMAP_ARG_STR(&args[0]);
 	if (*mech_name == '\0')
 		return 0;
 
 	client_ref(client);
-	sasl_server_auth_begin(&client->common, "IMAP", mech_name, NULL,
-			       sasl_callback);
+	sasl_server_auth_begin(&client->common, "IMAP", mech_name,
+			       IMAP_ARG_STR(&args[1]), sasl_callback);
 	if (!client->common.authenticating)
 		return 1;