On Sat, Feb 07, 2009 at 12:29:54PM +0100, Wolfgang Powisch wrote: > I think I've encountered a bug in 2.3.13, when I delete a Mailbox, the > corresponding quota-file isn't removed, and log-output shows that it > tries to unlink a wrong filename. All other files are removed correctly. > > I'm using default quota_db (quotalegacy) and fulldirhash. > > Adding some more debug output to code it seems that quota->root get's > free'd at some point before the commit is called, which should unlink > the file. Looks like the whole quota system is pretty broken actually! imap/mboxlist.c 1021: int deletequotaroot = 0; 1143: if (!r || force) r = mailbox_delete(&mailbox, deletequotaroot, NULL); Notice the complete lack of any code which actually sets deletequotaroot! Also, /* * Remove a quota root */ int mboxlist_unsetquota(const char *root) ------------- imap/mbdump.c 535: mboxlist_unsetquota(mbname); imap/mboxlist.c 2691:int mboxlist_unsetquota(const char *root) imap/mboxlist.h 198:int mboxlist_unsetquota(const char *root); ------------- It's only called from mbdump, so the "unsetquota" path isn't usually being used. There's stuff in imap/user.c for dealing with quotas as well, but back to "deletequotaroot" above, check out the code around it: if (!r || force) r = mailbox_delete(&mailbox, deletequotaroot, NULL); /* * See if we have to remove mailbox's quota root */ if (!r && mailbox.quota.root != NULL) { /* xxx look for any other mailboxes in this quotaroot */ } Yeah, ho hum. So I guess we don't bother trying then. I'm not, off the top of my head, sure how much quota.root looks like a mailbox, and internal mailbox, or a filesystem path. I'm not sure that the code is 100% clarified on this at all places either! I've been looking into exactly that issue while trying to make sure all the buffer sizes are correct for handling DELETED.* mailbox names safely and allowing users to be able to delete any mailbox name they are able to create! Bron. ---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html