]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Handle \Noselect flag properly for untagged LSUB replies.
authorTimo Sirainen <tss@iki.fi>
Tue, 13 Sep 2011 08:38:49 +0000 (11:38 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 13 Sep 2011 08:38:49 +0000 (11:38 +0300)
src/lib-storage/index/imapc/imapc-list.c

index 58633262132496bf298b9c25330c58ad6ddfa167..e51ad7be5e31aa427c6e1df4ce34aa87c29d7494 100644 (file)
@@ -139,8 +139,15 @@ static void imapc_untagged_lsub(const struct imapc_untagged_reply *reply,
        node = imapc_list_update_tree(list, list->tmp_subscriptions != NULL ?
                                      list->tmp_subscriptions :
                                      list->list.subscriptions, args);
-       if (node != NULL)
-               node->flags |= MAILBOX_SUBSCRIBED;
+       if (node != NULL) {
+               if ((node->flags & MAILBOX_NOSELECT) == 0)
+                       node->flags |= MAILBOX_SUBSCRIBED;
+               else {
+                       /* LSUB \Noselect means that the mailbox isn't
+                          subscribed, but it has children that are */
+                       node->flags &= ~MAILBOX_NOSELECT;
+               }
+       }
 }
 
 void imapc_list_register_callbacks(struct imapc_mailbox_list *list)