Mercurial > dovecot > original-hg > dovecot-1.2
changeset 214:05a1cf2761da HEAD
fixes for io_buffer_read_max()
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 10 Sep 2002 06:24:02 +0300 |
parents | 2a2ab4994b8a |
children | 6a18c1cf4d68 |
files | src/lib/iobuffer.c |
diffstat | 1 files changed, 4 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/iobuffer.c Tue Sep 10 06:18:34 2002 +0300 +++ b/src/lib/iobuffer.c Tue Sep 10 06:24:02 2002 +0300 @@ -652,8 +652,8 @@ buf->buffer_size = stop_offset - buf->mmap_offset; if (buf->buffer_size > buf->max_buffer_size) buf->buffer_size = buf->max_buffer_size; - if (buf->buffer_size > size) - buf->buffer_size = size; + if (buf->buffer_size > size + buf->skip) + buf->buffer_size = size + buf->skip; buf->buffer = mmap(NULL, buf->buffer_size, PROT_READ, MAP_PRIVATE, buf->fd, buf->mmap_offset); @@ -707,11 +707,9 @@ size = buf->buffer_size - buf->pos; if (!buf->file) { - ret = net_receive(buf->fd, buf->buffer + buf->pos, - buf->buffer_size - buf->pos); + ret = net_receive(buf->fd, buf->buffer + buf->pos, size); } else { - ret = read(buf->fd, buf->buffer + buf->pos, - buf->buffer_size - buf->pos); + ret = read(buf->fd, buf->buffer + buf->pos, size); if (ret == 0) ret = -1; /* EOF */ else if (ret < 0 && (errno == EINTR || errno == EAGAIN))