Fixes several crashes. Apparently can still break with mboxes, although it works with me..
Today, Timo Sirainen
Fixes several crashes. Apparently can still break with mboxes, although it works with me..
I decided to give this one a go, and it looks stable. I found some
(apparently) namespace bugs - or bugs in my config, although they look
more like actual bugs in the code (-:
With this namespace configuration:
namespace private {
separator = .
prefix = mail.
inbox = yes
}
I can't CREATE or SELECT mailboxes called "mail.foo.bar.baz": it tells
me that the mailbox "foo.bar.baz" doesn't exist (obviously). I tracked
this down; it seems like cilent_find_storage (or a function below
that) removes the prefix from the mailbox name, which leads to the
breakage I detailed above.
This patch should fix it at least for SELECT and CREATE. I have no
idea if other commands are affected, as well (but I assume they are).
--- dovecot-1.0-test39/src/imap/cmd-create.c Fri Jul 23 00:59:49 2004
+++ dovecot-1.0-test39.fixed/src/imap/cmd-create.c Sat Sep 4 16:43:30 2004
@@ -7,12 +7,14 @@
{
struct mail_storage *storage;
const char *mailbox;
+ const char *orig_mailbox;
int directory;
size_t len;
/* <mailbox> */
if (!client_read_string_args(client, 1, &mailbox))
return FALSE;
+ orig_mailbox = mailbox;
storage = client_find_storage(client, &mailbox);
if (storage == NULL)
@@ -29,7 +31,7 @@
mailbox = t_strndup(mailbox, len-1);
}
- if (!client_verify_mailbox_name(client, mailbox, FALSE, TRUE))
+ if (!client_verify_mailbox_name(client, orig_mailbox, FALSE, TRUE))
return TRUE;
if (mail_storage_mailbox_create(storage, mailbox, directory) < 0)
--- dovecot-1.0-test39/src/imap/cmd-select.c Sat Aug 28 18:06:35 2004
+++ dovecot-1.0-test39.fixed/src/imap/cmd-select.c Sat Sep 4 16:41:22 2004
@@ -10,10 +10,12 @@
struct mailbox *box;
struct mailbox_status status;
const char *mailbox;
+ const char *orig_mailbox;
/* <mailbox> */
if (!client_read_string_args(client, 1, &mailbox))
return FALSE;
+ orig_mailbox = mailbox;
if (client->mailbox != NULL) {
box = client->mailbox;
@@ -28,7 +30,7 @@
if (storage == NULL)
return TRUE;
- box = mailbox_open(storage, mailbox, !readonly ? 0 :
+ box = mailbox_open(storage, orig_mailbox, !readonly ? 0 :
(MAILBOX_OPEN_READONLY | MAILBOX_OPEN_KEEP_RECENT));
if (box == NULL) {
client_send_storage_error(client, storage);
Bye,
--
Andreas Fuchs,
Today, Andreas Fuchs asf@boinkor.net wrote:
I can't CREATE or SELECT mailboxes called "mail.foo.bar.baz": it tells me that the mailbox "foo.bar.baz" doesn't exist (obviously). I tracked this down; it seems like cilent_find_storage (or a function below that) removes the prefix from the mailbox name, which leads to the breakage I detailed above.
Correction: SELECT works. CREATE really doesn't, though (-:
So the patch's second hunk isn't necessary (harmful, actually). There was a test case breakage, sorry for that.
Thanks,
Andreas Fuchs, asf@boinkor.net, asf@jabber.at, antifuchs
participants (2)
-
Andreas Fuchs
-
Timo Sirainen