[Dovecot] LIST command claims children exist in empty folder
Dovecot 1.2 (8834:5284f45c249a)
Should list return \HasChildren if no folders exist under it? I'm
using mbox format.
2 create testfolder/ 2 OK Create completed. 3 list "testfolder/" *
- LIST (\Noselect \HasChildren) "/" "testfolder/" 3 OK List completed. 4 list "testfolder/" %
- LIST (\Noselect \HasChildren) "/" "testfolder/" 4 OK List completed. 5 list "testfolder" %
- LIST (\Noselect \HasChildren) "/" "testfolder" 5 OK List completed. 6 list "testfolder" *
- LIST (\Noselect \HasChildren) "/" "testfolder"
Thanks, Jonathan
On Mar 24, 2009, at 11:36 AM, Jonathan Siegle wrote:
Dovecot 1.2 (8834:5284f45c249a)
Should list return \HasChildren if no folders exist under it? I'm using mbox format.
2 create testfolder/ 2 OK Create completed. 3 list "testfolder/" * * LIST (\Noselect \HasChildren) "/" "testfolder/" 3 OK List completed. 4 list "testfolder/" % * LIST (\Noselect \HasChildren) "/" "testfolder/" 4 OK List completed. 5 list "testfolder" % * LIST (\Noselect \HasChildren) "/" "testfolder" 5 OK List completed. 6 list "testfolder" * * LIST (\Noselect \HasChildren) "/" "testfolder"
Thanks, Jonathan
Here is my patch. diff -r d975ed910613 src/lib-storage/index/mbox/mbox-storage.c --- a/src/lib-storage/index/mbox/mbox-storage.c Wed Mar 25 07:34:55 2009 -0400 +++ b/src/lib-storage/index/mbox/mbox-storage.c Wed Mar 25 07:44:52 2009 -0400 @@ -888,7 +888,7 @@ path = t_strconcat(dir, "/", fname, NULL); if (stat(path, &st) == 0) { if (S_ISDIR(st.st_mode)) - *flags |= MAILBOX_NOSELECT | MAILBOX_CHILDREN; + *flags |= MAILBOX_NOSELECT ; else { *flags |= MAILBOX_NOINFERIORS | STAT_GET_MARKED(st); if (is_inbox_file(ctx->list, path, fname) && 3 list "testfolder/" * * LIST (\Noselect \HasChildren) "/" "testfolder/" 3 OK List completed. 4 list "testfolder" % * LIST (\Noselect \HasNoChildren) "/" "testfolder" 4 OK List completed. 5 list "testfolder" % * LIST (\Noselect \HasNoChildren) "/" "testfolder" 5 OK List completed. 6 list "testfolder" * * LIST (\Noselect \HasNoChildren) "/" "testfolder" 6 OK List completed. So slightly different behavior. Is this correct ?
On Wed, 2009-03-25 at 07:52 -0400, Jonathan Siegle wrote:
On Mar 24, 2009, at 11:36 AM, Jonathan Siegle wrote:
Dovecot 1.2 (8834:5284f45c249a)
Should list return \HasChildren if no folders exist under it? I'm
using mbox format.
Is this really a problem?..
Here is my patch.
Problem with that is that it doesn't return any children flags when using LISTEXT command:
1 list (subscribed) "" % return (children)
Fixing this would require adding new code to fs_list_subs() to scan the subdirectory if children flags are missing. list_file_subdir() handles that for non-subscription listing, but it can't be directly used for subscription listing.
On Mar 25, 2009, at 8:42 PM, Timo Sirainen wrote:
On Wed, 2009-03-25 at 07:52 -0400, Jonathan Siegle wrote:
On Mar 24, 2009, at 11:36 AM, Jonathan Siegle wrote:
Dovecot 1.2 (8834:5284f45c249a)
Should list return \HasChildren if no folders exist under it? I'm using mbox format.
Is this really a problem?..
alpine/pine can't delete empty folders because the empty folder
\HasChildren.
Here is my patch.
Problem with that is that it doesn't return any children flags when using LISTEXT command:
1 list (subscribed) "" % return (children)
Fixing this would require adding new code to fs_list_subs() to scan
the subdirectory if children flags are missing. list_file_subdir() handles that for non-subscription listing, but it can't be directly used for subscription listing.
ok thanks. I'll look at that today.
On Thu, 26 Mar 2009, Jonathan Siegle wrote:
On Mar 25, 2009, at 8:42 PM, Timo Sirainen wrote:
On Wed, 2009-03-25 at 07:52 -0400, Jonathan Siegle wrote:
On Mar 24, 2009, at 11:36 AM, Jonathan Siegle wrote:
Dovecot 1.2 (8834:5284f45c249a)
Should list return \HasChildren if no folders exist under it? I'm using mbox format.
Is this really a problem?..
alpine/pine can't delete empty folders because the empty folder \HasChildren.
Here is my patch.
Problem with that is that it doesn't return any children flags when using LISTEXT command:
1 list (subscribed) "" % return (children)
Fixing this would require adding new code to fs_list_subs() to scan the subdirectory if children flags are missing. list_file_subdir() handles that for non-subscription listing, but it can't be directly used for subscription listing.
ok thanks. I'll look at that today.
I'm confused on what needs fixing. Maybe my test data doesn't cover the case.
Here is output from my "unpatched" dovecot 1.2beta3:
3 list (subscribed) "imaptestdir/" % return (children)
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox1"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox11"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox2"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox3"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox6"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/anotherfolder" 3 OK List completed. 4 list (subscribed) "imaptestdir/" * return (children)
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox1"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox11"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox2"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox3"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox6"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/anotherfolder"
- LIST (\Subscribed \Noselect \HasChildren) "/" "imaptestdir/anotherdirectory/"
- LIST (\Subscribed \Noselect \HasChildren) "/" "imaptestdir/anotherdirectory/aseconddirectory/"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/anotherdirectory/aseconddirectory/mailbox22" 4 OK List completed.
Here is output from the "patched" dovecot 1.2beta3:
3 list (subscribed) "imaptestdir/" % return (children)
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox1"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox11"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox2"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox3"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox6"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/anotherfolder" 3 OK List completed. 4 list (subscribed) "imaptestdir/" * return (children)
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox1"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox11"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox2"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox3"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/mailbox6"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/anotherfolder"
- LIST (\Subscribed \Noselect) "/" "imaptestdir/anotherdirectory/"
- LIST (\Subscribed \Noselect) "/" "imaptestdir/anotherdirectory/aseconddirectory/"
- LIST (\Subscribed \NoInferiors \UnMarked) "/" "imaptestdir/anotherdirectory/aseconddirectory/mailbox22" 4 OK List completed.
Thanks, Jonathan
On Thu, 26 Mar 2009, jsiegle@psu.edu wrote:
On Thu, 26 Mar 2009, Jonathan Siegle wrote:
On Mar 25, 2009, at 8:42 PM, Timo Sirainen wrote:
On Wed, 2009-03-25 at 07:52 -0400, Jonathan Siegle wrote:
On Mar 24, 2009, at 11:36 AM, Jonathan Siegle wrote:
Dovecot 1.2 (8834:5284f45c249a)
Should list return \HasChildren if no folders exist under it? I'm using mbox format.
Is this really a problem?..
alpine/pine can't delete empty folders because the empty folder \HasChildren.
Here is my patch.
Problem with that is that it doesn't return any children flags when using LISTEXT command:
1 list (subscribed) "" % return (children)
Fixing this would require adding new code to fs_list_subs() to scan the subdirectory if children flags are missing. list_file_subdir() handles that for non-subscription listing, but it can't be directly used for subscription listing.
ok thanks. I'll look at that today.
Sorry for the tripple! I didn't type what you typed. I understand the problem now.
participants (3)
-
Jonathan Siegle
-
jsiegle@psu.edu
-
Timo Sirainen