diff --git a/src/proto_http.c b/src/proto_http.c index 821bf8912..e502bffe1 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -634,7 +634,6 @@ static void http_server_error(struct session *t, struct stream_interface *si, buffer_abort(si->ob); buffer_auto_close(si->ob); buffer_erase(si->ob); - buffer_erase(si->ob); buffer_auto_close(si->ib); buffer_auto_read(si->ib); if (status > 0 && msg) { @@ -4333,6 +4332,7 @@ int http_wait_for_response(struct session *s, struct buffer *rep, int an_bit) rep->analysers = 0; txn->status = 502; rep->prod->flags |= SI_FL_NOLINGER; + buffer_ignore(rep, rep->l - rep->send_max); stream_int_retnclose(rep->cons, error_message(s, HTTP_ERR_502)); if (!(s->flags & SN_ERR_MASK)) @@ -4363,6 +4363,7 @@ int http_wait_for_response(struct session *s, struct buffer *rep, int an_bit) rep->analysers = 0; txn->status = 502; rep->prod->flags |= SI_FL_NOLINGER; + buffer_ignore(rep, rep->l - rep->send_max); stream_int_retnclose(rep->cons, error_message(s, HTTP_ERR_502)); if (!(s->flags & SN_ERR_MASK)) @@ -4387,6 +4388,7 @@ int http_wait_for_response(struct session *s, struct buffer *rep, int an_bit) rep->analysers = 0; txn->status = 504; rep->prod->flags |= SI_FL_NOLINGER; + buffer_ignore(rep, rep->l - rep->send_max); stream_int_retnclose(rep->cons, error_message(s, HTTP_ERR_504)); if (!(s->flags & SN_ERR_MASK)) @@ -4411,6 +4413,7 @@ int http_wait_for_response(struct session *s, struct buffer *rep, int an_bit) rep->analysers = 0; txn->status = 502; rep->prod->flags |= SI_FL_NOLINGER; + buffer_ignore(rep, rep->l - rep->send_max); stream_int_retnclose(rep->cons, error_message(s, HTTP_ERR_502)); if (!(s->flags & SN_ERR_MASK)) @@ -4737,6 +4740,7 @@ int http_process_res_common(struct session *t, struct buffer *rep, int an_bit, s rep->analysers = 0; txn->status = 502; rep->prod->flags |= SI_FL_NOLINGER; + buffer_ignore(rep, rep->l - rep->send_max); stream_int_retnclose(rep->cons, error_message(t, HTTP_ERR_502)); if (!(t->flags & SN_ERR_MASK)) t->flags |= SN_ERR_PRXCOND;