From 2cc26e4aa8f560815721115cab172c93fb97681b Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Wed, 5 Apr 2017 12:09:57 +0300 Subject: [PATCH] lib-imap-client: Add login_callback setter This way it can be set before actually calling login which might happen some time later. --- src/lib-imap-client/imapc-client-private.h | 3 +++ src/lib-imap-client/imapc-client.c | 9 +++++++++ src/lib-imap-client/imapc-client.h | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/src/lib-imap-client/imapc-client-private.h b/src/lib-imap-client/imapc-client-private.h index 2cb9beb512..6efe17dadd 100644 --- a/src/lib-imap-client/imapc-client-private.h +++ b/src/lib-imap-client/imapc-client-private.h @@ -23,6 +23,9 @@ struct imapc_client { imapc_state_change_callback_t *state_change_callback; void *state_change_context; + imapc_command_callback_t *login_callback; + void *login_context; + ARRAY(struct imapc_client_connection *) conns; bool logging_out; diff --git a/src/lib-imap-client/imapc-client.c b/src/lib-imap-client/imapc-client.c index d210ece43c..b904870d89 100644 --- a/src/lib-imap-client/imapc-client.c +++ b/src/lib-imap-client/imapc-client.c @@ -540,3 +540,12 @@ void imapc_client_register_state_change_callback(struct imapc_client *client, client->state_change_callback = cb; client->state_change_context = context; } + +void +imapc_client_set_login_callback(struct imapc_client *client, + imapc_command_callback_t *callback, void *context) +{ + client->login_callback = callback; + client->login_context = context; +} + diff --git a/src/lib-imap-client/imapc-client.h b/src/lib-imap-client/imapc-client.h index 0df40ef733..e001ba3716 100644 --- a/src/lib-imap-client/imapc-client.h +++ b/src/lib-imap-client/imapc-client.h @@ -173,6 +173,10 @@ imapc_client_init(const struct imapc_client_settings *set); void imapc_client_disconnect(struct imapc_client *client); void imapc_client_deinit(struct imapc_client **client); +/* Set login callback, must be set before calling other commands */ +void +imapc_client_set_login_callback(struct imapc_client *client, + imapc_command_callback_t *callback, void *context); /* Explicitly login to server (also done automatically). */ void imapc_client_login(struct imapc_client *client, imapc_command_callback_t *callback, void *context); -- 2.47.3