From: Aki Tuomi Date: Fri, 31 Mar 2017 06:59:02 +0000 (+0300) Subject: lib-imap-client: Add imapc_client_try_stop X-Git-Tag: 2.3.0.rc1~1806 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eae7a1783444e80721efbb853738c4aadc6b5eae;p=thirdparty%2Fdovecot%2Fcore.git lib-imap-client: Add imapc_client_try_stop --- diff --git a/src/lib-imap-client/imapc-client-private.h b/src/lib-imap-client/imapc-client-private.h index 89b183f3c0..2cb9beb512 100644 --- a/src/lib-imap-client/imapc-client-private.h +++ b/src/lib-imap-client/imapc-client-private.h @@ -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 diff --git a/src/lib-imap-client/imapc-client.c b/src/lib-imap-client/imapc-client.c index dcd9115d99..6d5b0e8ab0 100644 --- a/src/lib-imap-client/imapc-client.c +++ b/src/lib-imap-client/imapc-client.c @@ -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;