[BUG] buffers: buffer_forward() must not always clear BF_OUT_EMPTY

This flag was unconditionally cleared, which is wrong because we
can enable forwarding on an empty buffer.
This commit is contained in:
Willy Tarreau 2009-09-20 22:56:25 +02:00
parent 269358db93
commit 2d028db75a

View File

@ -91,14 +91,17 @@ static inline void buffer_forward(struct buffer *buf, unsigned long bytes)
if (!bytes)
return;
buf->flags &= ~BF_OUT_EMPTY;
data_left = buf->l - buf->send_max;
if (data_left >= bytes) {
buf->send_max += bytes;
buf->flags &= ~BF_OUT_EMPTY;
return;
}
buf->send_max += data_left;
if (buf->send_max)
buf->flags &= ~BF_OUT_EMPTY;
if (buf->to_forward == BUF_INFINITE_FORWARD)
return;