From 7d8fe66fbc53ab28d4e06492ca5a897743c0ee9c Mon Sep 17 00:00:00 2001 From: Josef 'Jeff' Sipek Date: Wed, 15 Feb 2017 09:13:05 -0500 Subject: [PATCH] lib-imap-client: invoke state change callback on "authentication success" --- src/lib-imap-client/imapc-client.h | 1 + src/lib-imap-client/imapc-connection.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/lib-imap-client/imapc-client.h b/src/lib-imap-client/imapc-client.h index 0a0ecda94b..04f49b258f 100644 --- a/src/lib-imap-client/imapc-client.h +++ b/src/lib-imap-client/imapc-client.h @@ -147,6 +147,7 @@ struct imapc_untagged_reply { }; enum imapc_state_change_event { + IMAPC_STATE_CHANGE_AUTH_OK, IMAPC_STATE_CHANGE_AUTH_FAILED, }; diff --git a/src/lib-imap-client/imapc-connection.c b/src/lib-imap-client/imapc-connection.c index 59c4d8fab1..43524bc98b 100644 --- a/src/lib-imap-client/imapc-connection.c +++ b/src/lib-imap-client/imapc-connection.c @@ -141,6 +141,19 @@ static int imapc_connection_ssl_init(struct imapc_connection *conn); static void imapc_command_free(struct imapc_command *cmd); 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) @@ -784,8 +797,7 @@ imapc_connection_auth_finish(struct imapc_connection *conn, 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); -- 2.47.3