]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
iostream-ssl: Don't hang if ostream's max buffer size is set to 0.
authorTimo Sirainen <tss@iki.fi>
Wed, 10 Apr 2013 19:05:36 +0000 (22:05 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 10 Apr 2013 19:05:36 +0000 (22:05 +0300)
src/lib-ssl-iostream/ostream-openssl.c

index 78bf4bfbac01cc56bf573f08ee02a69e8b6c7659..b4c5b3354a7de2e69ee56830a866ab3018a3320a 100644 (file)
@@ -47,8 +47,14 @@ o_stream_ssl_buffer(struct ssl_ostream *sstream, const struct const_iovec *iov,
                skip_left -= iov[i].iov_len;
        }
 
-       avail = sstream->ostream.max_buffer_size > sstream->buffer->used ?
-               sstream->ostream.max_buffer_size - sstream->buffer->used : 0;
+       if (sstream->ostream.max_buffer_size == 0) {
+               /* we're requeted to use whatever space is available in
+                  the buffer */
+               avail = buffer_get_size(sstream->buffer) - sstream->buffer->used;
+       } else {
+               avail = sstream->ostream.max_buffer_size > sstream->buffer->used ?
+                       sstream->ostream.max_buffer_size - sstream->buffer->used : 0;
+       }
        if (i < iov_count && skip_left > 0) {
                size = I_MIN(iov[i].iov_len - skip_left, avail);
                buffer_append(sstream->buffer,