From: Willy Tarreau Date: Tue, 5 Jan 2010 22:12:12 +0000 (+0100) Subject: [BUG] http: check options before the connection header X-Git-Tag: v1.4-dev6~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8db1c176343885bb41c0a375df2f25ada0f4607f;p=thirdparty%2Fhaproxy.git [BUG] http: check options before the connection header Commit 0dfdf19b6438c2cea47b1dea0442d65bacfc77cf introduced a regression because the connection header is now parsed and checked depending on the configured options, but the options are set after calling it instead of being set before. --- diff --git a/src/proto_http.c b/src/proto_http.c index 07e701de9a..c70543cb71 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -2635,12 +2635,12 @@ int http_process_req_common(struct session *s, struct buffer *req, int an_bit, s if ((s->fe->options|s->be->options) & PR_O_FORCE_CLO) tmp = TX_CON_WANT_CLO; - if (!(txn->flags & TX_CON_HDR_PARS)) - http_req_parse_connection_header(txn); - if ((txn->flags & TX_CON_WANT_MSK) < tmp) txn->flags = (txn->flags & ~TX_CON_WANT_MSK) | tmp; + if (!(txn->flags & TX_CON_HDR_PARS)) + http_req_parse_connection_header(txn); + if ((txn->flags & TX_CON_WANT_MSK) != TX_CON_WANT_TUN) { if ((s->fe->options|s->be->options) & PR_O_HTTP_CLOSE) txn->flags = (txn->flags & ~TX_CON_WANT_MSK) | TX_CON_WANT_CLO;