]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: When asking for capabilities, try to ask from a logged in connection.
authorTimo Sirainen <tss@iki.fi>
Sun, 9 Oct 2011 17:46:53 +0000 (20:46 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 9 Oct 2011 17:46:53 +0000 (20:46 +0300)
src/lib-imap-client/imapc-client.c

index 0a99ffa5bf80620e68fadebde3a1d7220e756199..343e84a8a2c4dc4e1583ecf5e649e5f7d96d7d81 100644 (file)
@@ -358,9 +358,17 @@ enum imapc_capability
 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,