changeset 479:c64ef7b87247 HEAD

Still more bugfixes to o_buffer_send_ibuffer() without sendfile.
author Timo Sirainen <tss@iki.fi>
date Tue, 22 Oct 2002 01:35:02 +0300
parents 0363ba999da5
children 24a649e9c6d1
files src/lib/obuffer-file.c
diffstat 1 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/obuffer-file.c	Tue Oct 22 01:23:20 2002 +0300
+++ b/src/lib/obuffer-file.c	Tue Oct 22 01:35:02 2002 +0300
@@ -579,6 +579,12 @@
 
 	(void)i_buffer_read_data(ctx->inbuf, &data, &size, O_BUFFER_MIN_SIZE-1);
 
+	if (size == 0) {
+		/* all sent */
+		io_loop_stop(ctx->ioloop);
+		return;
+	}
+
 	pos = ctx->iov_len++;
 	ctx->iov[pos].iov_base = (void *) data;
 	ctx->iov[pos].iov_len = size;
@@ -586,6 +592,7 @@
 	if (o_buffer_writev(ctx->fbuf, ctx->iov, ctx->iov_len) < 0) {
 		/* error */
 		io_loop_stop(ctx->ioloop);
+		return;
 	}
 
 	i_buffer_skip(ctx->inbuf, size - ctx->iov[pos].iov_len);
@@ -593,11 +600,6 @@
 	do {
 		ctx->iov_len--;
 	} while (ctx->iov_len > 0 && ctx->iov[ctx->iov_len-1].iov_len == 0);
-
-	if (ctx->iov_len == 0) {
-		/* all sent */
-		io_loop_stop(ctx->ioloop);
-	}
 }
 
 static off_t o_buffer_sendfile(_OBuffer *outbuf, IBuffer *inbuf)