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

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


details:   http://hg.dovecot.org/dovecot-2.1/rev/7d34543189c6
changeset: 14976:7d34543189c6
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 e4b66c2912da -r 7d34543189c6 src/lib-imap-client/imapc-connection.c
--- a/src/lib-imap-client/imapc-connection.c	Thu May 30 22:27:38 2013 +0300
+++ b/src/lib-imap-client/imapc-connection.c	Sat Jun 01 02:56:57 2013 +0300
@@ -118,6 +118,8 @@
 	unsigned int handshake_failed: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);
@@ -753,6 +755,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",
@@ -762,8 +765,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