On Thu, 2008-10-09 at 12:28 +0300, Timo Sirainen wrote:
On Thu, 2008-10-09 at 10:03 +0200, Sascha Wilde wrote:
It seems to work now for subscribing and selecting (and therefor for lsub and fetch) -- but LIST still bails out:
l2 list "" "*"
- LIST (\HasChildren) "/" "INBOX"
- LIST (\HasNoChildren) "/" "INBOX/Calendar"
- LIST (\HasNoChildren) "/" "INBOX/Contacts"
- LIST (\HasNoChildren) "/" "INBOX/Journal"
- LIST (\HasNoChildren) "/" "INBOX/Notes"
- LIST (\HasNoChildren) "/" "INBOX/Tasks"
- LIST (\HasNoChildren) "/" "INBOX/bla" l2 NO Unknown internal list error
This happens as soon as dovecot stumbles upon the shared namespace, so that other public name spaces, which otherwise work, are affected, too.
Right, that's intentional. You could set list=no to that namespace to avoid the error, or implement the listing code. :)
Well, I changed it a bit anyway since it seems to work slightly better when it doesn't return an error: http://hg.dovecot.org/dovecot-1.2/rev/d30f0525d457
1 list "" s/% 1 OK List completed.
2 list "" s/test/%
- LIST (\HasNoChildren) "/" "s/test/INBOX"
- LIST (\HasChildren) "/" "s/test/hello" 2 OK List completed.
3 list "" s/%
- LIST (\Noselect \HasChildren) "/" "s/test" 3 OK List completed.
So it's still missing the "users who have mailboxes shared to you" discovery missing. I guess the easiest way to implement that would be to find those out at startup and create a namespace for all such users immediately. A better performing way would be to delay the namespace creation until the mailboxes are actually accessed and just have shared-list.c's LIST code list those users (with some kind of caching).