Mercurial > dovecot > original-hg > dovecot-1.2
changeset 479:c64ef7b87247 HEAD
Still more bugfixes to o_buffer_send_ibuffer() without sendfile.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 22 Oct 2002 01:35:02 +0300 |
parents | 0363ba999da5 |
children | 24a649e9c6d1 |
files | src/lib/obuffer-file.c |
diffstat | 1 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/obuffer-file.c Tue Oct 22 01:23:20 2002 +0300 +++ b/src/lib/obuffer-file.c Tue Oct 22 01:35:02 2002 +0300 @@ -579,6 +579,12 @@ (void)i_buffer_read_data(ctx->inbuf, &data, &size, O_BUFFER_MIN_SIZE-1); + if (size == 0) { + /* all sent */ + io_loop_stop(ctx->ioloop); + return; + } + pos = ctx->iov_len++; ctx->iov[pos].iov_base = (void *) data; ctx->iov[pos].iov_len = size; @@ -586,6 +592,7 @@ if (o_buffer_writev(ctx->fbuf, ctx->iov, ctx->iov_len) < 0) { /* error */ io_loop_stop(ctx->ioloop); + return; } i_buffer_skip(ctx->inbuf, size - ctx->iov[pos].iov_len); @@ -593,11 +600,6 @@ do { ctx->iov_len--; } while (ctx->iov_len > 0 && ctx->iov[ctx->iov_len-1].iov_len == 0); - - if (ctx->iov_len == 0) { - /* all sent */ - io_loop_stop(ctx->ioloop); - } } static off_t o_buffer_sendfile(_OBuffer *outbuf, IBuffer *inbuf)