diff -Ppru cyrus-imapd-2.4.18.orig/imap/imapd.c cyrus-imapd-2.4.18/imap/imapd.c
--- cyrus-imapd-2.4.18.orig/imap/imapd.c 2015-07-06 05:38:29.000000000 +0200
+++ cyrus-imapd-2.4.18/imap/imapd.c 2015-12-21 18:00:27.551941924 +0100
@@ -6002,7 +6002,11 @@ void cmd_list(char *tag, struct listargs
list_callback_calls = 0;
- if (!listargs->pat->s[0] && !(listargs->cmd & LIST_CMD_LSUB)) {
+ if (!listargs->pat->s[0] && (listargs->cmd == LIST_CMD_LIST)) {
+ /* special case: query top-level hierarchy separator */
+ prot_printf(imapd_out, "* LIST (\\Noselect) \"%c\" \"\"\r\n",
+ imapd_namespace.hier_sep);
+ } else if (!listargs->pat->s[0] && (listargs->cmd == LIST_CMD_XLIST)) {
/* special case: query top-level hierarchy separator */
prot_printf(imapd_out, "* LIST (\\Noselect) \"%c\" \"\"\r\n",
imapd_namespace.hier_sep);