Mercurial > dovecot > original-hg > dovecot-1.2
changeset 7265:36da161ecc66 HEAD
Fixed "Cached message offset lost" errors when quota plugin was used.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 17 Feb 2008 14:30:39 +0200 |
parents | 91cf91f0a0a8 |
children | c1e18e979ac3 |
files | src/lib-storage/index/mbox/mbox-mail.c |
diffstat | 1 files changed, 12 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-mail.c Sun Feb 17 12:48:44 2008 +0200 +++ b/src/lib-storage/index/mbox/mbox-mail.c Sun Feb 17 14:30:39 2008 +0200 @@ -195,14 +195,19 @@ /* use the next message's offset to avoid reading through the entire message body to find out its size */ hdr = mail_index_get_header(mail->trans->trans_view); - if (_mail->seq == hdr->messages_count) { - /* last message, use the synced mbox size */ - int trailer_size; + if (_mail->seq >= hdr->messages_count) { + if (_mail->seq == hdr->messages_count) { + /* last message, use the synced mbox size */ + int trailer_size; - trailer_size = (mbox->storage->storage.flags & - MAIL_STORAGE_FLAG_SAVE_CRLF) != 0 ? 2 : 1; - - body_size = hdr->sync_size - body_offset - trailer_size; + trailer_size = (mbox->storage->storage.flags & + MAIL_STORAGE_FLAG_SAVE_CRLF) != 0 ? + 2 : 1; + body_size = hdr->sync_size - body_offset - trailer_size; + } else { + /* we're appending a new message */ + body_size = (uoff_t)-1; + } } else if (mbox_file_lookup_offset(mbox, mail->trans->trans_view, _mail->seq + 1, &next_offset) > 0) { body_size = next_offset - body_offset;