]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] stream_interface: truncate buffers when sending error messages
authorWilly Tarreau <w@1wt.eu>
Sun, 12 Dec 2010 12:06:00 +0000 (13:06 +0100)
committerWilly Tarreau <w@1wt.eu>
Sun, 12 Dec 2010 12:06:00 +0000 (13:06 +0100)
When an error message is returned to a client, all buffer contents
were left intact. Since the analysers were removed, the potentially
invalid data that were read had a chance to be sent too.

Now we ensure we only keep the already scheduled data in the buffer
and we truncate it after that. That means that responses with data
that must be blocked will really be blocked, and that incorrectly
chunked data will be stopped at the point where the chunking fails.

src/stream_interface.c

index 2ffca17ba1bd0a276b5bbfe38f8c2d0bbca35287..aae602ec54908efcf9b41357f1b9194a90dc8a1f 100644 (file)
@@ -73,6 +73,8 @@ void stream_int_retnclose(struct stream_interface *si, const struct chunk *msg)
        buffer_abort(si->ib);
        buffer_auto_close(si->ib);
        buffer_erase(si->ib);
+
+       buffer_cut_tail(si->ob);
        if (likely(msg && msg->len))
                buffer_write(si->ob, msg->str, msg->len);