changeset 5949:1a80f37a4a12 HEAD

Added MAIL_FETCH_NUL_STATE. Don't try to fetch cached flags now unless it's needed.
author Timo Sirainen <tss@iki.fi>
date Thu, 12 Jul 2007 02:40:14 +0300
parents a0b3228be6d2
children 49aebb3028f7
files src/imap/imap-fetch.c src/lib-storage/index/index-mail.c src/lib-storage/mail-storage.h
diffstat 3 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap/imap-fetch.c	Thu Jul 12 02:38:37 2007 +0300
+++ b/src/imap/imap-fetch.c	Thu Jul 12 02:40:14 2007 +0300
@@ -175,6 +175,10 @@
 			mailbox_header_lookup_init(ctx->box, data);
 	}
 
+	if ((ctx->fetch_data &
+	     (MAIL_FETCH_STREAM_HEADER | MAIL_FETCH_STREAM_BODY)) != 0)
+		ctx->fetch_data |= MAIL_FETCH_NUL_STATE;
+
 	ctx->trans = mailbox_transaction_begin(ctx->box,
 		MAILBOX_TRANSACTION_FLAG_HIDE);
 	ctx->select_counter = ctx->client->select_counter;
--- a/src/lib-storage/index/index-mail.c	Thu Jul 12 02:38:37 2007 +0300
+++ b/src/lib-storage/index/index-mail.c	Thu Jul 12 02:40:14 2007 +0300
@@ -916,10 +916,13 @@
 	data->rec = rec;
 	data->seq = seq;
 
-	if (!index_mail_get_fixed_field(mail, MAIL_CACHE_FLAGS,
-					&data->cache_flags,
-					sizeof(data->cache_flags)))
-		data->cache_flags = 0;
+	if ((mail->wanted_fields & (MAIL_FETCH_NUL_STATE |
+				    MAIL_FETCH_IMAP_BODY |
+				    MAIL_FETCH_IMAP_BODYSTRUCTURE)) != 0) {
+		(void)index_mail_get_fixed_field(mail, MAIL_CACHE_FLAGS,
+						 &data->cache_flags,
+						 sizeof(data->cache_flags));
+	}
 
 	/* set public fields */
 	mail->mail.mail.seq = seq;
--- a/src/lib-storage/mail-storage.h	Thu Jul 12 02:38:37 2007 +0300
+++ b/src/lib-storage/mail-storage.h	Thu Jul 12 02:40:14 2007 +0300
@@ -94,6 +94,9 @@
 	MAIL_FETCH_PHYSICAL_SIZE	= 0x00000080,
 	MAIL_FETCH_VIRTUAL_SIZE		= 0x00000100,
 
+	/* Set has_nuls / has_no_nuls fields */
+	MAIL_FETCH_NUL_STATE		= 0x00000200,
+
 	/* specials: */
 	MAIL_FETCH_IMAP_BODY		= 0x00001000,
 	MAIL_FETCH_IMAP_BODYSTRUCTURE	= 0x00002000,