dovecot-2.0: mdbox: Use unlimited buffer size when copying metad...

dovecot at dovecot.org dovecot at dovecot.org
Thu Aug 12 20:50:16 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/a56e9deffa54
changeset: 11994:a56e9deffa54
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Aug 12 18:50:12 2010 +0100
description:
mdbox: Use unlimited buffer size when copying metadata while purging.

diffstat:

 src/lib-storage/index/dbox-multi/mdbox-purge.c |  7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diffs (31 lines):

diff -r ae4a82ced01e -r a56e9deffa54 src/lib-storage/index/dbox-multi/mdbox-purge.c
--- a/src/lib-storage/index/dbox-multi/mdbox-purge.c	Thu Aug 12 18:47:01 2010 +0100
+++ b/src/lib-storage/index/dbox-multi/mdbox-purge.c	Thu Aug 12 18:50:12 2010 +0100
@@ -68,7 +68,7 @@
 	struct dbox_metadata_header meta_hdr;
 	const char *line;
 	const unsigned char *data;
-	size_t size;
+	size_t size, buf_size;
 	int ret;
 
 	ret = i_stream_read_data(file->input, &data, &size,
@@ -93,6 +93,9 @@
 	i_stream_skip(file->input, sizeof(meta_hdr));
 	if (output != NULL)
 		o_stream_send(output, &meta_hdr, sizeof(meta_hdr));
+
+	buf_size = i_stream_get_max_buffer_size(file->input);
+	i_stream_set_max_buffer_size(file->input, 0);
 	while ((line = i_stream_read_next_line(file->input)) != NULL) {
 		if (*line == DBOX_METADATA_OLDV1_SPACE || *line == '\0') {
 			/* end of metadata */
@@ -103,6 +106,8 @@
 			o_stream_send(output, "\n", 1);
 		}
 	}
+	i_stream_set_max_buffer_size(file->input, buf_size);
+
 	if (line == NULL) {
 		dbox_file_set_corrupted(file, "missing end-of-metadata line");
 		return 0;


More information about the dovecot-cvs mailing list