commit 38828610d918e857a452da1f9e7f2e4407960419
Author: Oswald Buddenhagen <[email protected]>
Date: Sat Jul 23 12:49:08 2011 +0200
check return value from close() after write()
otherwise we may lose data when quota is exceeded
or nfs is in a bad mood.
src/drv_maildir.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/src/drv_maildir.c b/src/drv_maildir.c
index 05a1ee4..09d5e5f 100644
--- a/src/drv_maildir.c
+++ b/src/drv_maildir.c
@@ -1028,7 +1028,11 @@ maildir_store_msg( store_t *gctx, msg_data_t *data, int
to_trash,
close( fd );
return cb( DRV_BOX_BAD, 0, aux );
}
- close( fd );
+ if (close( fd ) < 0) {
+ /* Quota exceeded may cause this. */
+ perror( buf );
+ return cb( DRV_BOX_BAD, 0, aux );
+ }
/* Moving seen messages to cur/ is strictly speaking incorrect, but
makes mutt happy. */
nfsnprintf( nbuf, sizeof(nbuf), "%s%s/%s/%s%s", prefix, box,
subdirs[!(data->flags & F_SEEN)], base, fbuf );
if (rename( buf, nbuf )) {
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
isync-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel