changeset 13596:b7e58d26393f

lib-storage: mailbox_get_metadata() no longer always opens mailbox.
author Timo Sirainen <tss@iki.fi>
date Sun, 02 Oct 2011 20:06:58 +0300
parents c2a173716500
children 341174c093ee
files src/lib-storage/index/dbox-multi/mdbox-storage.c src/lib-storage/index/dbox-single/sdbox-storage.c src/lib-storage/index/imapc/imapc-storage.c src/lib-storage/index/index-status.c src/lib-storage/index/maildir/maildir-storage.c src/lib-storage/index/mbox/mbox-storage.c src/lib-storage/mail-storage.c src/plugins/virtual/virtual-storage.c
diffstat 8 files changed, 24 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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
--- 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)
--- 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;
--- 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)
--- 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)
--- 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;
 
--- 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