dovecot-2.2: lib-imap-client: Ask CAPABILITY again after STARTTLS

dovecot at dovecot.org dovecot at dovecot.org
Sat Jun 1 02:57:01 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/3ed452837a8d
changeset: 16438:3ed452837a8d
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Jun 01 02:56:57 2013 +0300
description:
lib-imap-client: Ask CAPABILITY again after STARTTLS

diffstat:

 src/lib-imap-client/imapc-connection.c |  12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diffs (36 lines):

diff -r c4a85c9df948 -r 3ed452837a8d src/lib-imap-client/imapc-connection.c
--- a/src/lib-imap-client/imapc-connection.c	Sat Jun 01 02:56:25 2013 +0300
+++ b/src/lib-imap-client/imapc-connection.c	Sat Jun 01 02:56:57 2013 +0300
@@ -115,6 +115,8 @@
 	unsigned int idle_plus_waiting:1;
 };
 
+static void imapc_connection_capability_cb(const struct imapc_command_reply *reply,
+					   void *context);
 static int imapc_connection_output(struct imapc_connection *conn);
 static int imapc_connection_ssl_init(struct imapc_connection *conn);
 static void imapc_command_free(struct imapc_command *cmd);
@@ -752,6 +754,7 @@
 			     void *context)
 {
 	struct imapc_connection *conn = context;
+	struct imapc_command *cmd;
 
 	if (reply->state != IMAPC_COMMAND_STATE_OK) {
 		imapc_connection_input_error(conn, "STARTTLS failed: %s",
@@ -761,8 +764,13 @@
 
 	if (imapc_connection_ssl_init(conn) < 0)
 		imapc_connection_disconnect(conn);
-	else
-		imapc_connection_authenticate(conn);
+	else {
+		/* get updated capabilities */
+		cmd = imapc_connection_cmd(conn, imapc_connection_capability_cb,
+					   conn);
+		imapc_command_set_flags(cmd, IMAPC_COMMAND_FLAG_PRELOGIN);
+		imapc_command_send(cmd, "CAPABILITY");
+	}
 }
 
 static void imapc_connection_starttls(struct imapc_connection *conn)


More information about the dovecot-cvs mailing list