From: Willy Tarreau Date: Fri, 22 Jan 2010 13:17:47 +0000 (+0100) Subject: [BUG] http_server_error() must not purge a previous pending response X-Git-Tag: v1.4-dev7~5 X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/postgres_fdw.c?a=commitdiff_plain;h=d5fd51c75be6479539228f84377622a986b23be2;p=haproxy.git [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. --- diff --git a/src/proto_http.c b/src/proto_http.c index fcfd9bcea..c9d412483 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -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, 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->ib); buffer_auto_close(si->ib); buffer_auto_read(si->ib); if (status > 0 && msg) {