Mercurial > dovecot > original-hg > dovecot-1.2
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,