]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-imap-client: Add imapc_client_try_stop
authorAki Tuomi <aki.tuomi@dovecot.fi>
Fri, 31 Mar 2017 06:59:02 +0000 (09:59 +0300)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 3 Apr 2017 11:52:06 +0000 (14:52 +0300)
src/lib-imap-client/imapc-client-private.h
src/lib-imap-client/imapc-client.c

index 89b183f3c044f76060844b61529c5dd4828cb05a..2cb9beb51211176472fe585cc39fd07441f8205e 100644 (file)
@@ -50,5 +50,6 @@ void imapc_client_unref(struct imapc_client **client);
 
 void imapc_command_set_mailbox(struct imapc_command *cmd,
                               struct imapc_client_mailbox *box);
+void imapc_client_try_stop(struct imapc_client *client);
 
 #endif
index dcd9115d99f6bf10e11fa23482c03da9a8951997..6d5b0e8ab0eb27f4d5c09e29e4aec1f207f1de29 100644 (file)
@@ -201,6 +201,15 @@ void imapc_client_stop(struct imapc_client *client)
                io_loop_stop(client->ioloop);
 }
 
+void imapc_client_try_stop(struct imapc_client *client)
+{
+       struct imapc_client_connection *const *connp;
+       array_foreach(&client->conns, connp)
+               if (imapc_connection_get_state((*connp)->conn) != IMAPC_CONNECTION_STATE_DISCONNECTED)
+                       return;
+       imapc_client_stop(client);
+}
+
 bool imapc_client_is_running(struct imapc_client *client)
 {
        return client->ioloop != NULL;