dovecot-2.0: Added i_stream_set_init_buffer_size().
dovecot at dovecot.org
dovecot at dovecot.org
Thu Aug 13 19:23:05 EEST 2009
details: http://hg.dovecot.org/dovecot-2.0/rev/85abd99007c3
changeset: 9777:85abd99007c3
user: Timo Sirainen <tss at iki.fi>
date: Thu Aug 13 12:22:45 2009 -0400
description:
Added i_stream_set_init_buffer_size().
diffstat:
3 files changed, 14 insertions(+), 3 deletions(-)
src/lib/istream-internal.h | 2 +-
src/lib/istream.c | 11 +++++++++--
src/lib/istream.h | 4 ++++
diffs (61 lines):
diff -r e27785694615 -r 85abd99007c3 src/lib/istream-internal.h
--- a/src/lib/istream-internal.h Wed Aug 12 18:25:31 2009 -0400
+++ b/src/lib/istream-internal.h Thu Aug 13 12:22:45 2009 -0400
@@ -28,7 +28,7 @@ struct istream_private {
const unsigned char *buffer;
unsigned char *w_buffer; /* may be NULL */
- size_t buffer_size, max_buffer_size;
+ size_t buffer_size, max_buffer_size, init_buffer_size;
size_t skip, pos;
struct istream *parent; /* for filter streams */
diff -r e27785694615 -r 85abd99007c3 src/lib/istream.c
--- a/src/lib/istream.c Wed Aug 12 18:25:31 2009 -0400
+++ b/src/lib/istream.c Thu Aug 13 12:22:45 2009 -0400
@@ -52,6 +52,11 @@ void i_stream_close(struct istream *stre
if (stream->stream_errno == 0)
stream->stream_errno = ENOENT;
+}
+
+void i_stream_set_init_buffer_size(struct istream *stream, size_t size)
+{
+ stream->real_stream->init_buffer_size = size;
}
void i_stream_set_max_buffer_size(struct istream *stream, size_t max_size)
@@ -418,8 +423,8 @@ void i_stream_grow_buffer(struct istream
old_size = stream->buffer_size;
stream->buffer_size = stream->pos + bytes;
- if (stream->buffer_size <= I_STREAM_MIN_SIZE)
- stream->buffer_size = I_STREAM_MIN_SIZE;
+ if (stream->buffer_size <= stream->init_buffer_size)
+ stream->buffer_size = stream->init_buffer_size;
else
stream->buffer_size = nearest_power(stream->buffer_size);
@@ -561,6 +566,8 @@ i_stream_create(struct istream_private *
_stream->iostream.set_max_buffer_size =
i_stream_default_set_max_buffer_size;
}
+ if (_stream->init_buffer_size == 0)
+ _stream->init_buffer_size = I_STREAM_MIN_SIZE;
memset(&_stream->statbuf, 0, sizeof(_stream->statbuf));
_stream->statbuf.st_size = -1;
diff -r e27785694615 -r 85abd99007c3 src/lib/istream.h
--- a/src/lib/istream.h Wed Aug 12 18:25:31 2009 -0400
+++ b/src/lib/istream.h Thu Aug 13 12:22:45 2009 -0400
@@ -55,6 +55,10 @@ void i_stream_close(struct istream *stre
modified, flush any cached data. */
void i_stream_sync(struct istream *stream);
+/* Change the initial size for stream's input buffer. This basically just
+ grows the read buffer size from the default. This function has no effect
+ unless it's called before reading anything. */
+void i_stream_set_init_buffer_size(struct istream *stream, size_t size);
/* Change the maximum size for stream's input buffer to grow. Useful only
for buffered streams (currently only file). */
void i_stream_set_max_buffer_size(struct istream *stream, size_t max_size);
More information about the dovecot-cvs
mailing list