From: Timo Sirainen Date: Mon, 31 Jan 2011 17:01:22 +0000 (+0200) Subject: imapc: Fixed LIST/LSUB handling. X-Git-Tag: 2.1.alpha1~385 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de0170faf63cbbc4ac90b16d8a17b779d9fac4c8;p=thirdparty%2Fdovecot%2Fcore.git imapc: Fixed LIST/LSUB handling. --- diff --git a/src/lib-storage/index/imapc/imapc-list.c b/src/lib-storage/index/imapc/imapc-list.c index ee8e9a6f1e..32cf2d0c80 100644 --- a/src/lib-storage/index/imapc/imapc-list.c +++ b/src/lib-storage/index/imapc/imapc-list.c @@ -103,15 +103,13 @@ static void imapc_untagged_list(const struct imapc_untagged_reply *reply, 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 @@ static void imapc_untagged_lsub(const struct imapc_untagged_reply *reply, /* 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 @@ static int imapc_list_refresh(struct imapc_mailbox_list *list, "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);