changeset 12620:b9baa9db8950

imapc: Fixed LIST/LSUB handling.
author Timo Sirainen <tss@iki.fi>
date Mon, 31 Jan 2011 19:01:22 +0200
parents c83cdf089725
children 4244c828b59d
files src/lib-storage/index/imapc/imapc-list.c
diffstat 1 files changed, 3 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/imapc/imapc-list.c	Mon Jan 31 19:00:57 2011 +0200
+++ b/src/lib-storage/index/imapc/imapc-list.c	Mon Jan 31 19:01:22 2011 +0200
@@ -103,15 +103,13 @@
 		   lets see if this is the reply for its request. */
 		if (args[0].type == IMAP_ARG_EOL ||
 		    !imap_arg_get_nstring(&args[1], &sep) ||
-		    !imap_arg_get_astring(&args[2], &name) || *name != '\0')
+		    !imap_arg_get_astring(&args[2], &name))
 			return;
 
 		/* we can't handle NIL separator yet */
 		list->sep = sep == NULL ? '/' : sep[0];
 		return;
 	}
-	if (list->mailboxes == NULL)
-		list->mailboxes = mailbox_tree_init(list->sep);
 	(void)imapc_list_update_tree(list->mailboxes, args);
 }
 
@@ -126,8 +124,6 @@
 		/* we haven't asked for the separator yet */
 		return;
 	}
-	if (list->subscriptions == NULL)
-		list->subscriptions = mailbox_tree_init(list->sep);
 	node = imapc_list_update_tree(list->subscriptions, args);
 	if (node != NULL)
 		node->flags |= MAILBOX_SUBSCRIBED;
@@ -153,12 +149,14 @@
 				  "LIST \"\" *");
 		if (list->mailboxes != NULL)
 			mailbox_tree_deinit(&list->mailboxes);
+		list->mailboxes = mailbox_tree_init(list->sep);
 	} else {
 		imapc_client_cmdf(list->storage->client,
 				  imapc_list_simple_callback, &ctx,
 				  "LSUB \"\" *");
 		if (list->subscriptions != NULL)
 			mailbox_tree_deinit(&list->subscriptions);
+		list->subscriptions = mailbox_tree_init(list->sep);
 	}
 
 	imapc_client_run(list->storage->client);