dovecot-2.0: virtual: Fixed to work again without crashing after...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Jul 31 05:10:21 EEST 2009
details: http://hg.dovecot.org/dovecot-2.0/rev/20934905ccdc
changeset: 9707:20934905ccdc
user: Timo Sirainen <tss at iki.fi>
date: Thu Jul 30 22:08:44 2009 -0400
description:
virtual: Fixed to work again without crashing after several API changes.
diffstat:
1 file changed, 6 insertions(+), 4 deletions(-)
src/plugins/virtual/virtual-storage.c | 10 ++++++----
diffs (46 lines):
diff -r fb8f0a3d51dc -r 20934905ccdc src/plugins/virtual/virtual-storage.c
--- a/src/plugins/virtual/virtual-storage.c Thu Jul 30 22:07:15 2009 -0400
+++ b/src/plugins/virtual/virtual-storage.c Thu Jul 30 22:08:44 2009 -0400
@@ -136,6 +136,7 @@ static int virtual_backend_box_open(stru
if (mailbox_open(bbox->box) < 0) {
storage = mailbox_get_storage(bbox->box);
str = mail_storage_get_last_error(storage, &error);
+ mailbox_close(&bbox->box);
if (bbox->wildcard && (error == MAIL_ERROR_PERM ||
error == MAIL_ERROR_NOTFOUND)) {
/* this mailbox wasn't explicitly specified.
@@ -189,7 +190,7 @@ virtual_mailbox_alloc(struct mail_storag
const char *name, struct istream *input,
enum mailbox_flags flags)
{
- struct virtual_storage *storage = (struct virtual_storage *)storage;
+ struct virtual_storage *storage = (struct virtual_storage *)_storage;
struct virtual_mailbox *mbox;
pool_t pool;
@@ -253,13 +254,12 @@ static int virtual_mailbox_open(struct m
virtual_mailboxes_open(mbox, box->flags) < 0;
array_delete(&mbox->storage->open_stack,
array_count(&mbox->storage->open_stack)-1, 1);
- return failed ? -1 : 0;
+ return failed ? -1 : index_storage_mailbox_open(box);
}
static void virtual_mailbox_close(struct mailbox *box)
{
struct virtual_mailbox *mbox = (struct virtual_mailbox *)box;
- struct mail_storage *storage;
struct virtual_backend_box **bboxes;
unsigned int i, count;
@@ -270,7 +270,9 @@ static void virtual_mailbox_close(struct
if (bboxes[i]->search_result != NULL)
mailbox_search_result_free(&bboxes[i]->search_result);
- storage = bboxes[i]->box->storage;
+ if (bboxes[i]->box == NULL)
+ continue;
+
mailbox_close(&bboxes[i]->box);
if (array_is_created(&bboxes[i]->sync_outside_expunges))
array_free(&bboxes[i]->sync_outside_expunges);
More information about the dovecot-cvs
mailing list