Mercurial > dovecot > core-2.2
changeset 21900:de92e4fbb7c9
global: Fix imapc_client_login usage
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Wed, 05 Apr 2017 12:47:24 +0300 |
parents | d3f92c9be7d4 |
children | a44b05748869 |
files | src/auth/passdb-imap.c src/lib-imap-client/imapc-client.c src/lib-imap-client/imapc-client.h src/lib-storage/index/imapc/imapc-storage.c |
diffstat | 4 files changed, 15 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/passdb-imap.c Wed Apr 05 12:09:57 2017 +0300 +++ b/src/auth/passdb-imap.c Wed Apr 05 12:47:24 2017 +0300 @@ -104,8 +104,8 @@ request->verify_callback = callback; auth_request_ref(auth_request); - imapc_client_login(request->client, passdb_imap_login_callback, - request); + imapc_client_set_login_callback(request->client, passdb_imap_login_callback, request); + imapc_client_login(request->client); } static struct passdb_module *
--- a/src/lib-imap-client/imapc-client.c Wed Apr 05 12:09:57 2017 +0300 +++ b/src/lib-imap-client/imapc-client.c Wed Apr 05 12:47:24 2017 +0300 @@ -173,7 +173,9 @@ array_foreach(&client->conns, connp) { imapc_connection_ioloop_changed((*connp)->conn); - imapc_connection_connect((*connp)->conn, NULL, NULL); + if (imapc_connection_get_state((*connp)->conn) == IMAPC_CONNECTION_STATE_DISCONNECTED) + imapc_connection_connect((*connp)->conn, client->login_callback, + client->login_context); } if (io_loop_is_running(client->ioloop)) @@ -196,6 +198,7 @@ void imapc_client_run(struct imapc_client *client) { + i_assert(client->login_callback != NULL); imapc_client_run_pre(client); imapc_client_run_post(client); } @@ -268,15 +271,16 @@ } -void imapc_client_login(struct imapc_client *client, - imapc_command_callback_t *callback, void *context) +void imapc_client_login(struct imapc_client *client) { struct imapc_client_connection *conn; + i_assert(client->login_callback); i_assert(array_count(&client->conns) == 0); conn = imapc_client_add_connection(client); - imapc_connection_connect(conn->conn, callback, context); + imapc_connection_connect(conn->conn, + client->login_callback, client->login_context); } struct imapc_logout_ctx {
--- a/src/lib-imap-client/imapc-client.h Wed Apr 05 12:09:57 2017 +0300 +++ b/src/lib-imap-client/imapc-client.h Wed Apr 05 12:47:24 2017 +0300 @@ -178,8 +178,7 @@ 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); +void imapc_client_login(struct imapc_client *client); /* Send a LOGOUT and wait for disconnection. */ void imapc_client_logout(struct imapc_client *client);
--- a/src/lib-storage/index/imapc/imapc-storage.c Wed Apr 05 12:09:57 2017 +0300 +++ b/src/lib-storage/index/imapc/imapc-storage.c Wed Apr 05 12:47:24 2017 +0300 @@ -257,7 +257,7 @@ static void imapc_storage_client_login(struct imapc_storage_client *client, struct mail_user *user, const char *host) { - imapc_client_login(client->client, imapc_storage_client_login_callback, client); + imapc_client_login(client->client); if (!user->namespaces_created) { /* we're still initializing the user. wait for the login to finish, so we can fail the user creation @@ -340,6 +340,9 @@ client->client = imapc_client_init(&set); imapc_client_register_untagged(client->client, imapc_storage_client_untagged_cb, client); + + imapc_client_set_login_callback(client->client, imapc_storage_client_login_callback, client); + if ((ns->flags & NAMESPACE_FLAG_LIST_PREFIX) != 0 && (imapc_set->parsed_features & IMAPC_FEATURE_DELAY_LOGIN) == 0) { /* start logging in immediately */