diff src/lib-mail/message-send.c @ 991:21788a1e9e39 HEAD

Partial fetches are working fast again - faster than ever actually.
author Timo Sirainen <tss@iki.fi>
date Tue, 21 Jan 2003 07:37:35 +0200
parents 8028c4dcf38f
children e0dbaabbc22b
line wrap: on
line diff
--- a/src/lib-mail/message-send.c	Tue Jan 21 07:36:32 2003 +0200
+++ b/src/lib-mail/message-send.c	Tue Jan 21 07:37:35 2003 +0200
@@ -7,18 +7,19 @@
 #include "message-send.h"
 #include "message-size.h"
 
-int message_send(struct ostream *output, struct istream *input,
-		 const struct message_size *msg_size,
-		 uoff_t virtual_skip, uoff_t max_virtual_size)
+off_t message_send(struct ostream *output, struct istream *input,
+		   const struct message_size *msg_size,
+		   uoff_t virtual_skip, uoff_t max_virtual_size)
 {
 	const unsigned char *msg;
 	uoff_t old_limit, limit;
 	size_t i, size;
-	int cr_skipped, add_cr, ret;
+	off_t ret;
+	int cr_skipped, add_cr;
 
 	if (msg_size->physical_size == 0 ||
 	    virtual_skip >= msg_size->virtual_size)
-		return TRUE;
+		return 0;
 
 	if (max_virtual_size > msg_size->virtual_size - virtual_skip)
 		max_virtual_size = msg_size->virtual_size - virtual_skip;
@@ -39,6 +40,7 @@
 	message_skip_virtual(input, virtual_skip, NULL, &cr_skipped);
 
 	/* go through the message data and insert CRs where needed.  */
+	ret = 0;
 	while (max_virtual_size > 0 &&
 	       i_stream_read_data(input, &msg, &size, 0) > 0) {
 		add_cr = FALSE;
@@ -55,12 +57,14 @@
 			}
 		}
 
+		ret += i;
 		if (o_stream_send(output, msg, i) < 0)
-			return FALSE;
+			return -1;
 
 		if (add_cr) {
+			ret++;
 			if (o_stream_send(output, "\r", 1) < 0)
-				return FALSE;
+				return -1;
 			cr_skipped = TRUE;
 		} else {
 			cr_skipped = i > 0 && msg[i-1] == '\r';
@@ -69,5 +73,5 @@
 		i_stream_skip(input, i);
 	}
 
-	return TRUE;
+	return ret;
 }