dovecot-2.1: lib-storage: mailbox_get_metadata() no longer alway...
dovecot at dovecot.org
dovecot at dovecot.org
Sun Oct 2 20:00:51 EEST 2011
details: http://hg.dovecot.org/dovecot-2.1/rev/b7e58d26393f
changeset: 13596:b7e58d26393f
user: Timo Sirainen <tss at iki.fi>
date: Sun Oct 02 20:06:58 2011 +0300
description:
lib-storage: mailbox_get_metadata() no longer always opens mailbox.
diffstat:
src/lib-storage/index/dbox-multi/mdbox-storage.c | 4 +++-
src/lib-storage/index/dbox-single/sdbox-storage.c | 4 +++-
src/lib-storage/index/imapc/imapc-storage.c | 4 +++-
src/lib-storage/index/index-status.c | 5 +++++
src/lib-storage/index/maildir/maildir-storage.c | 5 ++++-
src/lib-storage/index/mbox/mbox-storage.c | 4 +++-
src/lib-storage/mail-storage.c | 4 ----
src/plugins/virtual/virtual-storage.c | 4 +++-
8 files changed, 24 insertions(+), 10 deletions(-)
diffs (141 lines):
diff -r c2a173716500 -r b7e58d26393f src/lib-storage/index/dbox-multi/mdbox-storage.c
--- a/src/lib-storage/index/dbox-multi/mdbox-storage.c Sun Oct 02 20:05:23 2011 +0300
+++ b/src/lib-storage/index/dbox-multi/mdbox-storage.c Sun Oct 02 20:06:58 2011 +0300
@@ -330,11 +330,13 @@
{
struct mdbox_mailbox *mbox = (struct mdbox_mailbox *)box;
+ if (index_mailbox_get_metadata(box, items, metadata_r) < 0)
+ return -1;
if ((items & MAILBOX_METADATA_GUID) != 0) {
if (mdbox_mailbox_get_guid(mbox, metadata_r->guid) < 0)
return -1;
}
- return index_mailbox_get_metadata(box, items, metadata_r);
+ return 0;
}
static int
diff -r c2a173716500 -r b7e58d26393f src/lib-storage/index/dbox-single/sdbox-storage.c
--- a/src/lib-storage/index/dbox-single/sdbox-storage.c Sun Oct 02 20:05:23 2011 +0300
+++ b/src/lib-storage/index/dbox-single/sdbox-storage.c Sun Oct 02 20:06:58 2011 +0300
@@ -271,11 +271,13 @@
{
struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)box;
+ if (index_mailbox_get_metadata(box, items, metadata_r) < 0)
+ return -1;
if ((items & MAILBOX_METADATA_GUID) != 0) {
memcpy(metadata_r->guid, mbox->mailbox_guid,
sizeof(metadata_r->guid));
}
- return index_mailbox_get_metadata(box, items, metadata_r);
+ return 0;
}
static int
diff -r c2a173716500 -r b7e58d26393f src/lib-storage/index/imapc/imapc-storage.c
--- a/src/lib-storage/index/imapc/imapc-storage.c Sun Oct 02 20:05:23 2011 +0300
+++ b/src/lib-storage/index/imapc/imapc-storage.c Sun Oct 02 20:06:58 2011 +0300
@@ -604,12 +604,14 @@
enum mailbox_metadata_items items,
struct mailbox_metadata *metadata_r)
{
+ if (index_mailbox_get_metadata(box, items, metadata_r) < 0)
+ return -1;
if ((items & MAILBOX_METADATA_GUID) != 0) {
/* a bit ugly way to do this, but better than nothing for now.
FIXME: if indexes are enabled, keep this there. */
mail_generate_guid_128_hash(box->name, metadata_r->guid);
}
- return index_mailbox_get_metadata(box, items, metadata_r);
+ return 0;
}
static void imapc_idle_timeout(struct imapc_mailbox *mbox)
diff -r c2a173716500 -r b7e58d26393f src/lib-storage/index/index-status.c
--- a/src/lib-storage/index/index-status.c Sun Oct 02 20:05:23 2011 +0300
+++ b/src/lib-storage/index/index-status.c Sun Oct 02 20:06:58 2011 +0300
@@ -263,6 +263,11 @@
enum mailbox_metadata_items items,
struct mailbox_metadata *metadata_r)
{
+ if (!box->opened) {
+ if (mailbox_open(box) < 0)
+ return -1;
+ }
+
if ((items & MAILBOX_METADATA_VIRTUAL_SIZE) != 0) {
if (get_metadata_virtual_size(box, metadata_r) < 0)
return -1;
diff -r c2a173716500 -r b7e58d26393f src/lib-storage/index/maildir/maildir-storage.c
--- a/src/lib-storage/index/maildir/maildir-storage.c Sun Oct 02 20:05:23 2011 +0300
+++ b/src/lib-storage/index/maildir/maildir-storage.c Sun Oct 02 20:06:58 2011 +0300
@@ -480,12 +480,15 @@
{
struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+ if (index_mailbox_get_metadata(box, items, metadata_r) < 0)
+ return -1;
+
if ((items & MAILBOX_METADATA_GUID) != 0) {
if (maildir_uidlist_get_mailbox_guid(mbox->uidlist,
metadata_r->guid) < 0)
return -1;
}
- return index_mailbox_get_metadata(box, items, metadata_r);
+ return 0;
}
static void maildir_mailbox_close(struct mailbox *box)
diff -r c2a173716500 -r b7e58d26393f src/lib-storage/index/mbox/mbox-storage.c
--- a/src/lib-storage/index/mbox/mbox-storage.c Sun Oct 02 20:05:23 2011 +0300
+++ b/src/lib-storage/index/mbox/mbox-storage.c Sun Oct 02 20:06:58 2011 +0300
@@ -628,11 +628,13 @@
{
struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+ if (index_mailbox_get_metadata(box, items, metadata_r) < 0)
+ return -1;
if ((items & MAILBOX_METADATA_GUID) != 0) {
if (mbox_mailbox_get_guid(mbox, metadata_r->guid) < 0)
return -1;
}
- return index_mailbox_get_metadata(box, items, metadata_r);
+ return 0;
}
static void mbox_notify_changes(struct mailbox *box)
diff -r c2a173716500 -r b7e58d26393f src/lib-storage/mail-storage.c
--- a/src/lib-storage/mail-storage.c Sun Oct 02 20:05:23 2011 +0300
+++ b/src/lib-storage/mail-storage.c Sun Oct 02 20:06:58 2011 +0300
@@ -1214,10 +1214,6 @@
{
memset(metadata_r, 0, sizeof(*metadata_r));
- if (!box->opened) {
- if (mailbox_open(box) < 0)
- return -1;
- }
if (box->v.get_metadata(box, items, metadata_r) < 0)
return -1;
diff -r c2a173716500 -r b7e58d26393f src/plugins/virtual/virtual-storage.c
--- a/src/plugins/virtual/virtual-storage.c Sun Oct 02 20:05:23 2011 +0300
+++ b/src/plugins/virtual/virtual-storage.c Sun Oct 02 20:06:58 2011 +0300
@@ -363,12 +363,14 @@
enum mailbox_metadata_items items,
struct mailbox_metadata *metadata_r)
{
+ if (index_mailbox_get_metadata(box, items, metadata_r) < 0)
+ return -1;
if ((items & MAILBOX_METADATA_GUID) != 0) {
mail_storage_set_error(box->storage, MAIL_ERROR_NOTPOSSIBLE,
"Virtual mailboxes have no GUIDs");
return -1;
}
- return index_mailbox_get_metadata(box, items, metadata_r);
+ return 0;
}
static void
More information about the dovecot-cvs
mailing list