From: Aki Tuomi Date: Wed, 5 Apr 2017 09:09:57 +0000 (+0300) Subject: lib-imap-client: Add login_callback setter X-Git-Tag: 2.3.0.rc1~1789 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc2bbf10739ab8b4ed2a18f6ee5756d5dd00a870;p=thirdparty%2Fdovecot%2Fcore.git lib-imap-client: Add login_callback setter This way it can be set before actually calling login which might happen some time later. --- 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 d720bc08a2..c8aae19462 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);