Mercurial > dovecot > original-hg > dovecot-1.2
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; }