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,