dovecot-2.2: imapc: imapc_storage no longer requires imapc_mailb...

dovecot at dovecot.org dovecot at dovecot.org
Sun Jun 9 00:42:47 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/e7ea508f36ca
changeset: 16479:e7ea508f36ca
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Jun 09 00:42:36 2013 +0300
description:
imapc: imapc_storage no longer requires imapc_mailbox_list.

diffstat:

 src/lib-storage/index/imapc/imapc-storage.c |  23 ++++++++++++++++-------
 1 files changed, 16 insertions(+), 7 deletions(-)

diffs (59 lines):

diff -r dbf8bbb7e51e -r e7ea508f36ca src/lib-storage/index/imapc/imapc-storage.c
--- 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,


More information about the dovecot-cvs mailing list