<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style>
</head>
<body><div>On Tue, Jun 5, 2018, at 7:27 PM, Edda wrote:<br></div>
<blockquote type="cite"><div><div> thank you very much for the handling of my patch! I don't have an
account on github. So, it's easiest for me to just dump it on the
users list. Please let me know if that bothers you.<br></div>
<div> <br></div>
</div>
</blockquote><div><br></div>
<div>It's fine for small patches like this, especially when they work right first time. ;)<br></div>
<div><br></div>
<div>For larger pieces of work, a pull request certainly makes it easier to collaboratively iterate towards a good solution! But if you'd prefer to not create a GitHub account for whatever reason, that's fair enough.</div>
<div><br></div>
<blockquote type="cite"><div><div> As an author, "Edda" would be fine :) Thank you.<br></div>
<div> <br></div>
</div>
</blockquote><div><br></div>
<div>Great! This is now on the 3.0 and master branches. Thanks very much! :)<br></div>
<div><br></div>
<div>On Tue, Jun 5, 2018, at 8:24 PM, Bron Gondwana wrote:<br></div>
<blockquote type="cite"><div style="font-family:Arial;">The patch looks correct at a reading. It also looks like it's masking a deeper bug, but that's fine - we can fix that later :)<br></div>
<div style="font-family:Arial;"><div><br></div>
</div>
</blockquote><div><br></div>
<div>What are you seeing that I'm missing?<br></div>
<div><br></div>
<div>I can see that this bug was not just "other users", but any common/solo list pattern with a hiersep in it, but this patch is general enough to fix both.<br></div>
<div><br></div>
<div><br></div>
<blockquote type="cite"><div><div> Best regards,<br></div>
<div> Edda<br></div>
<div> <br></div>
<div> Am 05.06.18 um 04:50 schrieb ellie timoney:<br></div>
</div>
<blockquote type="cite" cite="mid:1528167047.3654579.1396537248.3C4F6C8E@webmail.messagingengine.com"><div>Hi Edda,<br></div>
<div><br></div>
<div>Thanks for the patch! I've added your email below to the
GitHub issue for this: <a href="https://github.com/cyrusimap/cyrus-imapd/issues/2362">https://github.com/cyrusimap/cyrus-imapd/issues/2362</a><br></div>
<div><br></div>
<div>I'll review the patch and if it looks good, will include it
in the next 3.0 release. I'll also forward-port it to master if
necessary.<br></div>
<div><br></div>
<div>Let me know if you'd like to submit this as a Pull Request,
so your GitHub identity can be credited for it, otherwise I'll
just set your email address as the author on the commit. :)<br></div>
<div><br></div>
<div>Cheers,<br></div>
<div><br></div>
<div>ellie<br></div>
<div><br></div>
<div><br></div>
<div>On Mon, Jun 4, 2018, at 9:51 PM, Edda wrote:<br></div>
<blockquote type="cite"><div><div>Hi,<br></div>
<div><br></div>
<div>I was able to reproduce the issue with 3.0.5 with these
settings:<br></div>
<div><br></div>
<div>unixhierarchysep: yes<br></div>
<div>altnamespace: no<br></div>
<div>crossdomains: no<br></div>
<div><br></div>
<div>Key factor is unixhierarchysep on. (crossdomains is a
special case. altnamespace on/off only looks different.)<br></div>
<div><br></div>
<div>I did a lot of debugging and found out the following:<br></div>
<div><br></div>
<div>Compared to version 2.4.x and 2.5.x 3.0.x function
list_data in ../imap/imapd.c does not transform the
hierarchy separator.<br></div>
<div><br></div>
<div>In function mboxlist_do_find (../imap/mboxlist.c) below
"Other Users namespace" we have a prefix search. With
"unixhierarchysep on" cyrus uses the wrong prefix
(domainpat) for that search.<br></div>
<div><br></div>
<div>Example:<br></div>
<div><br></div>
<div>. LIST "" "user/%"<br></div>
<div>* LIST (\HasChildren) "/" user/bbb<br></div>
<div>. OK Completed (0.000 secs 4 calls)<br></div>
<div>. LIST "" "user/bbb/sub01"<br></div>
<div>. OK Completed (0.000 secs)<br></div>
<div><br></div>
<div>In this case cyrus searches with domainpat:
user.bbb/sub01/subsub01<br></div>
<div><br></div>
<div>The prefix is previously generated from a variable
called commonpat, which is used only for this specific
search.<br></div>
<div><br></div>
<div>So I fixed it there with this patch:<br></div>
<div><br></div>
<div>--- cyrus-imapd-3.0.5/imap/mboxlist.c.orig 2018-04-12
13:12:47.633956338 +0200<br></div>
<div>+++ cyrus-imapd-3.0.5/imap/mboxlist.c 2018-05-30
10:56:44.255724710 +0200<br></div>
<div>@@ -2774,6 +2774,10 @@<br></div>
<div> const char *pat = strarray_nth(patterns,
i);<br></div>
<div> if (pat[prefixlen] != c) break;<br></div>
<div> }<br></div>
<div>+ if (rock->namespace->hier_sep == '/') {<br></div>
<div>+ if (c == '/') c = '.';<br></div>
<div>+ else if (c == '.') c = DOTCHAR;<br></div>
<div>+ }<br></div>
<div> if (i < patterns->count) break;<br></div>
<div> if (c == '*' || c == '%' || c == '?') break;<br></div>
<div> commonpat[prefixlen] = c;<br></div>
<div><br></div>
<div><br></div>
<div>Now for the example above the search pattern is
user.bbb.sub01 and the submailbox is returned correctly.<br></div>
<div><br></div>
<div>. LIST "" "user/%"<br></div>
<div>* LIST (\HasChildren) "/" user/bbb<br></div>
<div>. OK Completed (0.000 secs 4 calls)<br></div>
<div>. LIST "" "user/bbb/sub01"<br></div>
<div>* LIST (\HasChildren) "/" user/bbb/sub01<br></div>
<div>. OK Completed (0.000 secs 2 calls)<br></div>
<div>. LIST "" "user/bbb/%"<br></div>
<div>* LIST (\HasChildren) "/" user/bbb/sub01<br></div>
<div>* LIST (\HasNoChildren) "/" user/bbb/sub.dot01<br></div>
<div>. OK Completed (0.000 secs 3 calls)<br></div>
<div>. SUBSCRIBE "user/bbb/sub01"<br></div>
<div>. OK Completed<br></div>
<div>. LSUB "" "user/*"<br></div>
<div>* LSUB () "/" user/bbb/sub01<br></div>
<div>. OK Completed (0.000 secs 1 calls)<br></div>
<div><br></div>
<div>The patch works fine in my test environment and I see no
caveats yet. I would be very nice if someone could check it
:-)<br></div>
<div><br></div>
<div>Best regards,<br></div>
<div>Edda<br></div>
<div><br></div>
<div><br></div>
<div><br></div>
<div><br></div>
<div>Am 15.05.18 um 10:37 schrieb <a href="mailto:marco@nucleus.it">marco@nucleus.it</a>:<br></div>
</div>
<blockquote type="cite" cite="mid:20180515103703.3ad4051d@lobo.lobo.dom"><pre>Hi,
after migrating from cyrus-imapd-2.4.17 to cyrus-imapd-3.0.6 we cannot
view (other) users subfolders.
Distro:Gentoo
Cyrus version: cyrus-imapd-3.0.6
imapd-3.0.5.conf attached
In the test environment we created a user named "aaa" and "bbb", then
we created the folder "bbb/mytest/mysubtest". We set the acl for the
user aaa to share the mailbox bbb/mytest/mysubtest
user.aaa 0 default aaa lrswipkxtecdan anonymous p
user.bbb 0 default bbb lrswipkxtecdan anonymous p
aaa lrswipkxtecdan
user.bbb.mytest 0 default bbb lrswipkxtecdan anonymous p
aaa lrswipkxtecdan
user.bbb.mytest.mysubtest 0 default
bbb lrswipkxtecdan
anonymous p
aaa lrswipkxtecdan
>From whatever imap client, when we search for new folders, user.bbb
appears, but neither user.bbb.mytest nor user.bbb.mytest.mysubtest.
This is the capture from imapd 3.0.6:
IMAP> 62 LIST "" "user/%"
IMAP< * LIST (\HasChildren) "/" user/bbb
IMAP< 62 OK Completed (0.001 secs 3 calls)
IMAP> 63 LIST "" "user/bbb/%"
IMAP< 63 OK Completed (0.000 secs)
IMAP> 64 LSUB "" "user/bbb/%"
IMAP< 64 OK Completed (0.000 secs)
IMAP> 65 LSUB "" "user/%"
IMAP< 65 OK Completed (0.000 secs)
IMAP> 66 LSUB "" "%"
IMAP< * LSUB (\Noselect \HasChildren) "/" INBOX
IMAP< 66 OK Completed (0.000 secs 4 calls)
IMAP> 16 NOOP
IMAP< 16 OK Success
IMAP> 67 SUBSCRIBE "user/bbb"
IMAP< 67 OK Completed
IMAP> 68 LSUB "" "%"
IMAP< * LSUB (\Noselect \HasChildren) "/" INBOX
IMAP< * LSUB (\Noselect \HasChildren) "/" user
IMAP< 68 OK Completed (0.001 secs 5 calls)
IMAP> 69 LSUB "" "INBOX/%"
IMAP< * LSUB () "/" INBOX/Drafts
...
IMAP> 74 LSUB "" "user/%"
IMAP< * LSUB () "/" user/bbb
IMAP< 74 OK Completed (0.001 secs 1 calls)
IMAP> 75 LSUB "" "user/bbb/%"
IMAP< 75 OK Completed (0.001 secs)
Refreshing only the user.bbb folders nothing changed
IMAP> 83 LIST "" "user/%"
IMAP< * LIST (\HasChildren) "/" user/bbb
IMAP< 83 OK Completed (0.001 secs 3 calls)
IMAP> 84 LIST "" "user/bbb/%"
IMAP< 84 OK Completed (0.001 secs)
IMAP> 85 LSUB "" "user/bbb/%"
IMAP< 85 OK Completed (0.001 secs)
IMAP> 86 LSUB "" "user/%"
IMAP< * LSUB () "/" user/bbb
IMAP< 86 OK Completed (0.001 secs 1 calls)
With net-mail/cyrus-imapd-2.4.17 all is working fine
imapd-2.4.17.conf attached
user.aaa 0 default aaa lrswipkxtecda anonymous p
user.bbb 0 default bbb lrswipkxtecda anonymous p
aaa lrswipkxtecda
user.bbb.mytest 0 default bbb lrswipkxtecda anonymous p
aaa lrswipkxtecda
user.bbb.mytest.mysubtest 0 default bbb lrswipkxtecda
anonymous p
aaa lrswipkxtecda
if we search for new folders to subscribe user/bbb and all the
subfolders appeared
IMAP> 57 LIST "" "user/%"
IMAP< * LIST (\HasChildren) "/" user/bbb
IMAP< 57 OK Completed (0.000 secs 3 calls)
IMAP> 58 LIST "" "user/bbb/%"
IMAP< * LIST (\HasChildren) "/" user/bbb/mytest
IMAP< 58 OK Completed (0.000 secs 2 calls)
IMAP> 59 LIST "" "user/bbb/mytest/%"
IMAP< * LIST (\HasNoChildren) "/" user/bbb/mytest/mysubtest
IMAP< 59 OK Completed (0.000 secs 2 calls)
IMAP> 60 LIST "" "user/bbb/mytest/mysubtest/%"
IMAP< 60 OK Completed (0.000 secs)
IMAP> 61 LSUB "" "user/bbb/mytest/mysubtest/%"
IMAP< 61 OK Completed (0.000 secs)
IMAP> 62 LSUB "" "user/bbb/mytest/%"
IMAP< 62 OK Completed (0.000 secs)
IMAP> 63 LSUB "" "user/bbb/%"
IMAP< 63 OK Completed (0.000 secs)
IMAP> 64 LSUB "" "user/%"
IMAP< 64 OK Completed (0.000 secs)
IMAP> 65 LSUB "" "%"
IMAP< * LSUB (\Noselect \HasChildren) "/" INBOX
IMAP< 65 OK Completed (0.000 secs 4 calls)
IMAP> 66 NOOP
IMAP< 66 OK Completed
IMAP> 67 SUBSCRIBE "user/bbb"
IMAP< 67 OK Completed
IMAP> 68 SUBSCRIBE "user/bbb/mytest/mysubtest"
IMAP< 68 OK Completed
IMAP> 69 SUBSCRIBE "user/bbb/mytest"
IMAP< 69 OK Completed
Any suggestion?
Thanks for the support
Marco
<br></pre><div><br></div>
<div><br></div>
<pre>----
Cyrus Home Page: <a href="http://www.cyrusimap.org/">http://www.cyrusimap.org/</a>
List Archives/Info: <a href="http://lists.andrew.cmu.edu/pipermail/info-cyrus/">http://lists.andrew.cmu.edu/pipermail/info-cyrus/</a>
To Unsubscribe:
<a href="https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus">https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus</a>
<br></pre></blockquote><p><br></p><div>----<br></div>
<div>Cyrus Home Page: <a href="http://www.cyrusimap.org/">http://www.cyrusimap.org/</a><br></div>
<div>List Archives/Info: <a href="http://lists.andrew.cmu.edu/pipermail/info-cyrus/">http://lists.andrew.cmu.edu/pipermail/info-cyrus/</a><br></div>
<div>To Unsubscribe:<br></div>
<div><a href="https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus">https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus</a><br></div>
</blockquote><div><br></div>
<div><br></div>
<div><br></div>
<pre>----
Cyrus Home Page: <a href="http://www.cyrusimap.org/">http://www.cyrusimap.org/</a>
List Archives/Info: <a href="http://lists.andrew.cmu.edu/pipermail/info-cyrus/">http://lists.andrew.cmu.edu/pipermail/info-cyrus/</a>
To Unsubscribe:
<a href="https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus">https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus</a><br></pre></blockquote><p><br></p><div>----<br></div>
<div>Cyrus Home Page: <a href="http://www.cyrusimap.org/">http://www.cyrusimap.org/</a><br></div>
<div>List Archives/Info: <a href="http://lists.andrew.cmu.edu/pipermail/info-cyrus/">http://lists.andrew.cmu.edu/pipermail/info-cyrus/</a><br></div>
<div>To Unsubscribe:<br></div>
<div><a href="https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus">https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus</a><br></div>
</blockquote><div><br></div>
</body>
</html>