changeset 21564:437d6269a5b1

lib-imap-client: invoke state change callback on "authentication success"
author Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
date Wed, 15 Feb 2017 09:13:05 -0500
parents b1fd9a5366bf
children c6ed855ff6c9
files src/lib-imap-client/imapc-client.h src/lib-imap-client/imapc-connection.c
diffstat 2 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-imap-client/imapc-client.h	Wed Feb 15 09:12:35 2017 -0500
+++ b/src/lib-imap-client/imapc-client.h	Wed Feb 15 09:13:05 2017 -0500
@@ -147,6 +147,7 @@
 };
 
 enum imapc_state_change_event {
+	IMAPC_STATE_CHANGE_AUTH_OK,
 	IMAPC_STATE_CHANGE_AUTH_FAILED,
 };
 
--- a/src/lib-imap-client/imapc-connection.c	Wed Feb 15 09:12:35 2017 -0500
+++ b/src/lib-imap-client/imapc-connection.c	Wed Feb 15 09:13:05 2017 -0500
@@ -142,6 +142,19 @@
 static void imapc_command_send_more(struct imapc_connection *conn);
 
 static void
+imapc_auth_ok(struct imapc_connection *conn)
+{
+	if (conn->client->set.debug)
+		i_debug("imapc(%s): Authenticated successfully", conn->name);
+
+	if (conn->client->state_change_callback == NULL)
+		return;
+
+	conn->client->state_change_callback(conn->client->state_change_context,
+					    IMAPC_STATE_CHANGE_AUTH_OK, NULL);
+}
+
+static void
 imapc_auth_failed(struct imapc_connection *conn,
 		  const char *error)
 {
@@ -785,8 +798,7 @@
 		return;
 	}
 
-	if (conn->client->set.debug)
-		i_debug("imapc(%s): Authenticated successfully", conn->name);
+	imapc_auth_ok(conn);
 
 	timeout_remove(&conn->to);
 	imapc_connection_set_state(conn, IMAPC_CONNECTION_STATE_DONE);