dovecot: Handle write failures with files better.

dovecot at dovecot.org dovecot at dovecot.org
Sat Nov 24 06:59:13 EET 2007


details:   http://hg.dovecot.org/dovecot/rev/6a9080055e54
changeset: 6851:6a9080055e54
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Nov 24 06:59:08 2007 +0200
description:
Handle write failures with files better.

diffstat:

1 file changed, 8 insertions(+), 1 deletion(-)
src/lib/ostream-file.c |    9 ++++++++-

diffs (26 lines):

diff -r c8f6eec5e996 -r 6a9080055e54 src/lib/ostream-file.c
--- a/src/lib/ostream-file.c	Sat Nov 24 06:51:27 2007 +0200
+++ b/src/lib/ostream-file.c	Sat Nov 24 06:59:08 2007 +0200
@@ -205,7 +205,8 @@ static ssize_t o_stream_writev(struct fi
 		if (ret > 0) {
 			fstream->real_offset += ret;
 			ret += sent;
-		} else {
+		} else if (!fstream->file) {
+			/* return what we managed to get sent */
 			ret = sent;
 		}
 	}
@@ -214,6 +215,12 @@ static ssize_t o_stream_writev(struct fi
 		if (errno == EAGAIN || errno == EINTR)
 			return 0;
 		fstream->ostream.ostream.stream_errno = errno;
+		stream_closed(fstream);
+		return -1;
+	}
+	if (unlikely(ret == 0 && fstream->file)) {
+		/* assume out of disk space */
+		fstream->ostream.ostream.stream_errno = ENOSPC;
 		stream_closed(fstream);
 		return -1;
 	}


More information about the dovecot-cvs mailing list