Mercurial > dovecot > core-2.2
changeset 13448:ea8f667ac6ef
mbox: Fixed fetching last message from compressed mboxes.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 12 Sep 2011 14:27:46 +0300 |
parents | 1a39f7648c9d |
children | f4899179ad4c |
files | src/lib-storage/index/mbox/mbox-mail.c |
diffstat | 1 files changed, 9 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-mail.c Mon Sep 12 14:01:36 2011 +0300 +++ b/src/lib-storage/index/mbox/mbox-mail.c Mon Sep 12 14:27:46 2011 +0300 @@ -259,15 +259,19 @@ if (!mail_index_lookup_seq(view, mail->mail.mail.uid, &seq)) i_panic("Message unexpectedly expunged from index"); - if (seq == hdr->messages_count) { + if (seq < hdr->messages_count) { + if (mbox_file_lookup_offset(mbox, view, seq + 1, + next_offset_r) <= 0) + ret = -1; + } else if (mail->mail.mail.box->input != NULL) { + /* opened the mailbox as input stream. we can't trust the + sync_size, since it's wrong with compressed mailboxes */ + ret = 0; + } else { /* last message, use the synced mbox size */ trailer_size = mbox->storage->storage.set->mail_save_crlf ? 2 : 1; *next_offset_r = mbox->mbox_hdr.sync_size - trailer_size; - } else { - if (mbox_file_lookup_offset(mbox, view, seq + 1, - next_offset_r) <= 0) - ret = -1; } mail_index_view_close(&view); return ret;