dovecot: Update cache->st_ino and st_dev after compressing.
dovecot at dovecot.org
dovecot at dovecot.org
Fri Nov 16 23:55:35 EET 2007
details: http://hg.dovecot.org/dovecot/rev/ee1c4c3d5e5a
changeset: 6823:ee1c4c3d5e5a
user: Timo Sirainen <tss at iki.fi>
date: Fri Nov 16 23:55:31 2007 +0200
description:
Update cache->st_ino and st_dev after compressing.
diffstat:
1 file changed, 10 insertions(+), 1 deletion(-)
src/lib-index/mail-cache-compress.c | 11 ++++++++++-
diffs (35 lines):
diff -r f814eecd75cd -r ee1c4c3d5e5a src/lib-index/mail-cache-compress.c
--- a/src/lib-index/mail-cache-compress.c Fri Nov 16 20:19:40 2007 +0200
+++ b/src/lib-index/mail-cache-compress.c Fri Nov 16 23:55:31 2007 +0200
@@ -346,7 +346,8 @@ static int mail_cache_compress_locked(st
bool *unlock)
{
struct dotlock *dotlock;
- mode_t old_mask;
+ struct stat st;
+ mode_t old_mask;
uint32_t file_seq, old_offset;
ARRAY_TYPE(uint32_t) ext_offsets;
const uint32_t *offsets;
@@ -394,6 +395,12 @@ static int mail_cache_compress_locked(st
}
if (mail_cache_copy(cache, trans, fd, &file_seq, &ext_offsets) < 0) {
+ (void)file_dotlock_delete(&dotlock);
+ return -1;
+ }
+
+ if (fstat(fd, &st) < 0) {
+ mail_cache_set_syscall_error(cache, "fstat()");
(void)file_dotlock_delete(&dotlock);
return -1;
}
@@ -426,6 +433,8 @@ static int mail_cache_compress_locked(st
mail_cache_file_close(cache);
cache->fd = fd;
+ cache->st_ino = st.st_ino;
+ cache->st_dev = st.st_dev;
if (cache->file_cache != NULL)
file_cache_set_fd(cache->file_cache, cache->fd);
More information about the dovecot-cvs
mailing list