Mercurial > dovecot > core-2.2
changeset 11994:a56e9deffa54
mdbox: Use unlimited buffer size when copying metadata while purging.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 12 Aug 2010 18:50:12 +0100 |
parents | ae4a82ced01e |
children | 53147e8bdaf9 |
files | src/lib-storage/index/dbox-multi/mdbox-purge.c |
diffstat | 1 files changed, 6 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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;