From: Timo Sirainen Date: Thu, 12 Aug 2010 17:50:12 +0000 (+0100) Subject: mdbox: Use unlimited buffer size when copying metadata while purging. X-Git-Tag: 2.0.rc6~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27902ecd70d903ee3b426ac363443268f8934b9a;p=thirdparty%2Fdovecot%2Fcore.git mdbox: Use unlimited buffer size when copying metadata while purging. --- diff --git a/src/lib-storage/index/dbox-multi/mdbox-purge.c b/src/lib-storage/index/dbox-multi/mdbox-purge.c index 77ba851bd5..771e04f20c 100644 --- a/src/lib-storage/index/dbox-multi/mdbox-purge.c +++ b/src/lib-storage/index/dbox-multi/mdbox-purge.c @@ -68,7 +68,7 @@ mdbox_file_copy_metadata(struct dbox_file *file, struct ostream *output) 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 @@ mdbox_file_copy_metadata(struct dbox_file *file, struct ostream *output) 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 @@ mdbox_file_copy_metadata(struct dbox_file *file, struct ostream *output) 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;