changeset 39:0757e34063ec HEAD

io_buffer_send() was buggy
author Timo Sirainen <tss@iki.fi>
date Tue, 27 Aug 2002 00:46:04 +0300
parents 2a56fca685a2
children 1ba4156fe84f
files src/lib/iobuffer.c
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/iobuffer.c	Tue Aug 27 00:21:57 2002 +0300
+++ b/src/lib/iobuffer.c	Tue Aug 27 00:46:04 2002 +0300
@@ -410,9 +410,6 @@
 	if (buf->closed)
                 return -1;
 
-	if (size == 0)
-		return 1;
-
 	if (buf->pos == 0) {
 		/* buffer is empty, try to send the data immediately */
 		ret = buf->file ? my_write(buf->fd, data, size) :
@@ -425,7 +422,12 @@
 
 		buf->offset += ret;
 		data = (const char *) data + ret;
-                size -= ret;
+		size -= ret;
+	}
+
+	if (size == 0) {
+		/* all sent */
+		return 1;
 	}
 
 	if (io_buffer_get_space(buf, size) == NULL) {
@@ -829,6 +831,7 @@
 
 unsigned char *io_buffer_get_space(IOBuffer *buf, unsigned int size)
 {
+	i_assert(size > 0);
 	i_assert(size <= INT_MAX);
 	i_assert(!buf->receive);
 	buf->transmit = TRUE;