changeset 131:4dd31e34e72f HEAD

Removed buffering, it's done by io_buffer_send() now.
author Timo Sirainen <tss@iki.fi>
date Tue, 03 Sep 2002 23:15:45 +0300
parents c2ec223e37ba
children 4dc5d31e2282
files src/lib-mail/message-send.c
diffstat 1 files changed, 9 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/message-send.c	Tue Sep 03 23:12:34 2002 +0300
+++ b/src/lib-mail/message-send.c	Tue Sep 03 23:15:45 2002 +0300
@@ -5,13 +5,11 @@
 #include "message-send.h"
 #include "message-size.h"
 
-#define OUTPUT_BUFFER_SIZE 1024
-
 int message_send(IOBuffer *outbuf, IOBuffer *inbuf, MessageSize *msg_size,
 		 uoff_t virtual_skip, uoff_t max_virtual_size)
 {
-	unsigned char *msg, buf[OUTPUT_BUFFER_SIZE];
-	unsigned int i, size, pos;
+	unsigned char *msg;
+	unsigned int i, size;
 	int cr_skipped, add_cr;
 
 	if (msg_size->physical_size == 0 ||
@@ -24,13 +22,13 @@
 	if (msg_size->physical_size == msg_size->virtual_size) {
 		/* no need to kludge with CRs, we can use sendfile() */
 		io_buffer_skip(inbuf, virtual_skip);
-		return io_buffer_send_buf(outbuf, inbuf, max_virtual_size) > 0;
+		return io_buffer_send_iobuffer(outbuf, inbuf,
+					       max_virtual_size) > 0;
 	}
 
 	message_skip_virtual(inbuf, virtual_skip, NULL, &cr_skipped);
 
 	/* go through the message data and insert CRs where needed.  */
-	pos = 0;
 	while (io_buffer_read_data(inbuf, &msg, &size, 0) >= 0) {
 		add_cr = FALSE;
 		for (i = 0; i < size; i++) {
@@ -54,30 +52,14 @@
 			}
 		}
 
-		if (pos + i >= OUTPUT_BUFFER_SIZE) {
-			/* buffer is full, flush it */
-			if (io_buffer_send(outbuf, buf, pos) <= 0)
-				return FALSE;
-			pos = 0;
-		}
-
-		if (i >= OUTPUT_BUFFER_SIZE) {
-			/* data larger than buffer, send it directly */
-			if (io_buffer_send(outbuf, msg, i) <= 0)
-				return FALSE;
+		if (io_buffer_send(outbuf, msg, i) <= 0)
+			return FALSE;
 
-			i_assert(pos == 0);
-		} else {
-			/* put the data into buffer */
-			memcpy(buf + pos, msg, i);
-			pos += i;
-
-			i_assert(pos < OUTPUT_BUFFER_SIZE);
+		if (add_cr) {
+			if (io_buffer_send(outbuf, "\r", 1) <= 0)
+				return FALSE;
 		}
 
-		if (add_cr)
-			buf[pos++] = '\r';
-
 		/* see if we've reached the limit */
 		if (max_virtual_size == 0)
 			break;
@@ -86,8 +68,5 @@
 		io_buffer_skip(inbuf, i);
 	}
 
-	if (io_buffer_send(outbuf, buf, pos) <= 0)
-		return FALSE;
-
 	return TRUE;
 }