Mercurial > dovecot > core-2.2
changeset 16479:e7ea508f36ca
imapc: imapc_storage no longer requires imapc_mailbox_list.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 09 Jun 2013 00:42:36 +0300 |
parents | dbf8bbb7e51e |
children | d952b4091425 |
files | src/lib-storage/index/imapc/imapc-storage.c |
diffstat | 1 files changed, 16 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/imapc/imapc-storage.c Sun Jun 09 00:06:42 2013 +0300 +++ b/src/lib-storage/index/imapc/imapc-storage.c Sun Jun 09 00:42:36 2013 +0300 @@ -226,6 +226,8 @@ int imapc_storage_try_get_root_sep(struct imapc_storage *storage, char *sep_r) { + i_assert(storage->list != NULL); + if (storage->root_sep == '\0') { imapc_storage_send_hierarcy_sep_lookup(storage); while (storage->root_sep_pending) @@ -292,23 +294,28 @@ set.ssl_mode = IMAPC_CLIENT_SSL_MODE_NONE; set.ssl_crypto_device = _storage->set->ssl_crypto_device; - storage->list = (struct imapc_mailbox_list *)ns->list; - storage->list->storage = storage; storage->client = imapc_client_init(&set); p_array_init(&storage->remote_namespaces, _storage->pool, 4); p_array_init(&storage->untagged_callbacks, _storage->pool, 16); + if (strcmp(ns->list->name, MAILBOX_LIST_NAME_IMAPC) == 0) { + storage->list = (struct imapc_mailbox_list *)ns->list; + storage->list->storage = storage; + imapc_list_register_callbacks(storage->list); + } + imapc_client_register_untagged(storage->client, imapc_storage_untagged_cb, storage); - imapc_list_register_callbacks(storage->list); imapc_storage_register_untagged(storage, "STATUS", imapc_untagged_status); imapc_storage_register_untagged(storage, "NAMESPACE", imapc_untagged_namespace); /* start connecting to imap server and get the hierarchy separator. */ imapc_client_login(storage->client, NULL, NULL); - imapc_storage_send_hierarcy_sep_lookup(storage); - if ((ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0) { + if (storage->list != NULL) + imapc_storage_send_hierarcy_sep_lookup(storage); + if ((ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0 && + storage->list != NULL) { /* we're using imapc for the INBOX namespace. wait and make sure we can successfully access the IMAP server (so if the username is invalid we don't just keep failing every @@ -336,8 +343,10 @@ struct imapc_storage *storage = (struct imapc_storage *)_storage; struct imapc_mailbox_list *list = (struct imapc_mailbox_list *)_list; - i_assert(storage->list != NULL); - list->storage = storage; + if (strcmp(_list->name, MAILBOX_LIST_NAME_IMAPC) == 0) { + i_assert(storage->list != NULL); + list->storage = storage; + } } void imapc_storage_register_untagged(struct imapc_storage *storage,