Mercurial > dovecot > original-hg > dovecot-1.2
changeset 7252:c96bf18c886b HEAD
When setting cache corrupted, make sure we don't write broken values to the
new cache file. Also log broken virtual size fetches better and support 0 as
a generic "some fields" value.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 16 Feb 2008 15:43:51 +0200 |
parents | c3d829cdbfa5 |
children | 6f9786d83007 |
files | src/lib-storage/index/index-mail.c |
diffstat | 1 files changed, 16 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-mail.c Sat Feb 16 15:16:34 2008 +0200 +++ b/src/lib-storage/index/index-mail.c Sat Feb 16 15:43:51 2008 +0200 @@ -1336,6 +1336,15 @@ const char *field_name; switch (field) { + case 0: + field_name = "fields"; + break; + case MAIL_FETCH_VIRTUAL_SIZE: + field_name = "virtual size"; + imail->data.physical_size = (uoff_t)-1; + imail->data.virtual_size = (uoff_t)-1; + imail->data.parts = NULL; + break; case MAIL_FETCH_MESSAGE_PARTS: field_name = "MIME parts"; imail->data.parts = NULL; @@ -1354,8 +1363,14 @@ field_name = t_strdup_printf("#%x", field); } + /* make sure we don't cache invalid values */ + mail_cache_transaction_rollback(&imail->trans->cache_trans); + imail->trans->cache_trans = + mail_cache_get_transaction(imail->trans->cache_view, + imail->trans->trans); + + imail->data.no_caching = TRUE; mail_cache_set_corrupted(imail->ibox->cache, "Broken %s for mail UID %u", field_name, mail->uid); - }