changeset 13630:337f4e427bb1

imapc: When asking for capabilities, try to ask from a logged in connection.
author Timo Sirainen <tss@iki.fi>
date Sun, 09 Oct 2011 20:46:53 +0300
parents 8a2ec8284b61
children d2608fc3c9e2
files src/lib-imap-client/imapc-client.c
diffstat 1 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-imap-client/imapc-client.c	Sun Oct 09 20:46:28 2011 +0300
+++ b/src/lib-imap-client/imapc-client.c	Sun Oct 09 20:46:53 2011 +0300
@@ -358,9 +358,17 @@
 imapc_client_get_capabilities(struct imapc_client *client)
 {
 	struct imapc_client_connection *const *connp;
+	struct imapc_connection *conn = NULL;
 
-	connp = array_idx(&client->conns, 0);
-	return imapc_connection_get_capabilities((*connp)->conn);
+	/* try to find a connection that is already logged in */
+	array_foreach(&client->conns, connp) {
+		conn = (*connp)->conn;
+		if (imapc_connection_get_state(conn) == IMAPC_CONNECTION_STATE_DONE)
+			return imapc_connection_get_capabilities(conn);
+	}
+
+	/* fallback to whatever exists (there always exists one) */
+	return imapc_connection_get_capabilities(conn);
 }
 
 int imapc_client_create_temp_fd(struct imapc_client *client,