changeset 6559:15a9ce2cc0ab HEAD

Always keep a usable value in stream->max_buffer_size.
author Timo Sirainen <tss@iki.fi>
date Sat, 20 Oct 2007 19:15:10 +0300
parents 4a1caf69ca14
children 9036aa956d14
files src/lib-mail/istream-header-filter.c src/lib-storage/index/mbox/istream-raw-mbox.c src/lib/istream-crlf.c src/lib/istream-limit.c src/lib/istream-seekable.c src/lib/istream-tee.c
diffstat 6 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/istream-header-filter.c	Sat Oct 20 19:12:32 2007 +0300
+++ b/src/lib-mail/istream-header-filter.c	Sat Oct 20 19:15:10 2007 +0300
@@ -55,6 +55,7 @@
 	struct header_filter_istream *mstream =
 		(struct header_filter_istream *)stream;
 
+	mstream->istream.max_buffer_size = max_size;
 	i_stream_set_max_buffer_size(mstream->input, max_size);
 }
 
@@ -333,6 +334,7 @@
 
 	mstream = i_new(struct header_filter_istream, 1);
 	mstream->pool = pool_alloconly_create("header filter stream", 4096);
+	mstream->istream.max_buffer_size = input->real_stream->max_buffer_size;
 
 	mstream->input = input;
 	i_stream_ref(mstream->input);
--- a/src/lib-storage/index/mbox/istream-raw-mbox.c	Sat Oct 20 19:12:32 2007 +0300
+++ b/src/lib-storage/index/mbox/istream-raw-mbox.c	Sat Oct 20 19:15:10 2007 +0300
@@ -39,6 +39,7 @@
 {
 	struct raw_mbox_istream *rstream = (struct raw_mbox_istream *)stream;
 
+	rstream->istream.max_buffer_size = max_size;
 	i_stream_set_max_buffer_size(rstream->input, max_size);
 }
 
@@ -360,6 +361,7 @@
 	rstream->received_time = (time_t)-1;
 	rstream->next_received_time = (time_t)-1;
 
+	rstream->istream.max_buffer_size = input->real_stream->max_buffer_size;
 	rstream->istream.iostream.destroy = i_stream_raw_mbox_destroy;
 	rstream->istream.iostream.set_max_buffer_size =
 		i_stream_raw_mbox_set_max_buffer_size;
--- a/src/lib/istream-crlf.c	Sat Oct 20 19:12:32 2007 +0300
+++ b/src/lib/istream-crlf.c	Sat Oct 20 19:15:10 2007 +0300
@@ -25,6 +25,7 @@
 {
 	struct crlf_istream *cstream = (struct crlf_istream *)stream;
 
+	cstream->istream.max_buffer_size = max_size;
 	i_stream_set_max_buffer_size(cstream->input, max_size);
 }
 
@@ -129,6 +130,7 @@
 	cstream = i_new(struct crlf_istream, 1);
 	cstream->input = input;
 	cstream->crlf = crlf;
+	cstream->istream.max_buffer_size = input->real_stream->max_buffer_size;
 
 	cstream->istream.iostream.destroy = i_stream_crlf_destroy;
 	cstream->istream.iostream.set_max_buffer_size =
--- a/src/lib/istream-limit.c	Sat Oct 20 19:12:32 2007 +0300
+++ b/src/lib/istream-limit.c	Sat Oct 20 19:15:10 2007 +0300
@@ -26,6 +26,7 @@
 {
 	struct limit_istream *lstream = (struct limit_istream *) stream;
 
+	lstream->istream.max_buffer_size = max_size;
 	i_stream_set_max_buffer_size(lstream->input, max_size);
 }
 
@@ -117,6 +118,7 @@
 	lstream->input = input;
 	lstream->v_start_offset = v_start_offset;
 	lstream->v_size = v_size;
+	lstream->istream.max_buffer_size = input->real_stream->max_buffer_size;
 
 	lstream->istream.istream.v_offset =
 		input->v_offset < v_start_offset ? 0 :
--- a/src/lib/istream-seekable.c	Sat Oct 20 19:12:32 2007 +0300
+++ b/src/lib/istream-seekable.c	Sat Oct 20 19:15:10 2007 +0300
@@ -18,7 +18,6 @@
 struct seekable_istream {
 	struct istream_private istream;
 
-	size_t max_buffer_size;
 	char *temp_prefix;
 	uoff_t write_peak;
 
@@ -63,7 +62,7 @@
 	struct seekable_istream *sstream = (struct seekable_istream *)stream;
 	unsigned int i;
 
-	sstream->max_buffer_size = max_size;
+	sstream->istream.max_buffer_size = max_size;
 	if (sstream->fd_input != NULL)
 		i_stream_set_max_buffer_size(sstream->fd_input, max_size);
 	for (i = 0; sstream->input[i] != NULL; i++)
@@ -123,7 +122,7 @@
 
 	sstream->fd = fd;
 	sstream->fd_input =
-		i_stream_create_fd(fd, sstream->max_buffer_size, TRUE);
+		i_stream_create_fd(fd, sstream->istream.max_buffer_size, TRUE);
 	return 0;
 }
 
@@ -170,7 +169,7 @@
 	if (stream->istream.v_offset +
 	    (stream->pos - stream->skip) >= sstream->buffer->used) {
 		/* need to read more */
-		if (sstream->buffer->used >= sstream->max_buffer_size)
+		if (sstream->buffer->used >= stream->max_buffer_size)
 			return FALSE;
 
 		/* read more to buffer */
@@ -310,7 +309,7 @@
 	sstream = i_new(struct seekable_istream, 1);
 	sstream->temp_prefix = i_strdup(temp_prefix);
 	sstream->buffer = buffer_create_dynamic(default_pool, BUF_INITIAL_SIZE);
-        sstream->max_buffer_size = max_buffer_size;
+        sstream->istream.max_buffer_size = max_buffer_size;
 
 	sstream->input = i_new(struct istream *, count + 1);
 	memcpy(sstream->input, input, sizeof(*input) * count);
--- a/src/lib/istream-tee.c	Sat Oct 20 19:12:32 2007 +0300
+++ b/src/lib/istream-tee.c	Sat Oct 20 19:15:10 2007 +0300
@@ -99,6 +99,7 @@
 {
 	struct tee_child_istream *tstream = (struct tee_child_istream *)stream;
 
+	tstream->istream.max_buffer_size = max_size;
 	i_stream_set_max_buffer_size(tstream->tee->input, max_size);
 }
 
@@ -190,6 +191,8 @@
 	tstream = i_new(struct tee_child_istream, 1);
 	tstream->tee = tee;
 
+	tstream->istream.max_buffer_size =
+		tee->input->real_stream->max_buffer_size;
 	tstream->istream.iostream.close = i_stream_tee_close;
 	tstream->istream.iostream.destroy = i_stream_tee_destroy;
 	tstream->istream.iostream.set_max_buffer_size =