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