# HG changeset patch # User Timo Sirainen # Date 1030398364 -10800 # Node ID 0757e34063eca09fcc20ca13753b96ae76af906b # Parent 2a56fca685a201e37ed423269c534a22512d9f0b io_buffer_send() was buggy diff -r 2a56fca685a2 -r 0757e34063ec src/lib/iobuffer.c --- a/src/lib/iobuffer.c Tue Aug 27 00:21:57 2002 +0300 +++ b/src/lib/iobuffer.c Tue Aug 27 00:46:04 2002 +0300 @@ -410,9 +410,6 @@ if (buf->closed) return -1; - if (size == 0) - return 1; - if (buf->pos == 0) { /* buffer is empty, try to send the data immediately */ ret = buf->file ? my_write(buf->fd, data, size) : @@ -425,7 +422,12 @@ buf->offset += ret; data = (const char *) data + ret; - size -= ret; + size -= ret; + } + + if (size == 0) { + /* all sent */ + return 1; } if (io_buffer_get_space(buf, size) == NULL) { @@ -829,6 +831,7 @@ unsigned char *io_buffer_get_space(IOBuffer *buf, unsigned int size) { + i_assert(size > 0); i_assert(size <= INT_MAX); i_assert(!buf->receive); buf->transmit = TRUE;