[BUG] http_server_error() must not purge a previous pending response

This can cause parts of responses to be truncated in case of
pipelined requests if the second request generates an error
before the first request is completely flushed.
This commit is contained in:
Willy Tarreau 2010-01-22 14:17:47 +01:00
parent e803de2c6b
commit d5fd51c75b

View File

@ -619,8 +619,11 @@ int http_remove_header2(struct http_msg *msg, struct buffer *buf,
static void http_server_error(struct session *t, struct stream_interface *si, static void http_server_error(struct session *t, struct stream_interface *si,
int err, int finst, int status, const struct chunk *msg) int err, int finst, int status, const struct chunk *msg)
{ {
buffer_auto_read(si->ob);
buffer_abort(si->ob);
buffer_auto_close(si->ob);
buffer_erase(si->ob);
buffer_erase(si->ob); buffer_erase(si->ob);
buffer_erase(si->ib);
buffer_auto_close(si->ib); buffer_auto_close(si->ib);
buffer_auto_read(si->ib); buffer_auto_read(si->ib);
if (status > 0 && msg) { if (status > 0 && msg) {