From: Bertrand Paquet Date: Wed, 6 Apr 2016 09:58:31 +0000 (+0200) Subject: BUG/MINOR : allow to log cookie for tarpit and denied request X-Git-Tag: v1.7-dev3~48 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83a2c3d4d71fc23b9c513b456d33cc7488dff99f;p=thirdparty%2Fhaproxy.git BUG/MINOR : allow to log cookie for tarpit and denied request The following patch allow to log cookie for tarpit and denied request. This minor bug affect at least 1.5, 1.6 and 1.7 branch. The solution is not perfect : may be the cookie processing (manage_client_side_cookies) can be moved into http_process_req_common. --- diff --git a/src/proto_http.c b/src/proto_http.c index 0c377360c9..6ab14ce7b5 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -4258,6 +4258,12 @@ int http_process_req_common(struct stream *s, struct channel *req, int an_bit, s * if the client closes first. */ channel_dont_connect(req); + + /* Allow cookie logging + */ + if (s->be->cookie_name || sess->fe->capture_name) + manage_client_side_cookies(s, req); + req->analysers &= AN_FLT_END; /* remove switching rules etc... */ req->analysers |= AN_REQ_HTTP_TARPIT; req->analyse_exp = tick_add_ifset(now_ms, s->be->timeout.tarpit); @@ -4272,6 +4278,12 @@ int http_process_req_common(struct stream *s, struct channel *req, int an_bit, s goto done_without_exp; deny: /* this request was blocked (denied) */ + + /* Allow cookie logging + */ + if (s->be->cookie_name || sess->fe->capture_name) + manage_client_side_cookies(s, req); + txn->flags |= TX_CLDENY; txn->status = http_err_codes[txn->rule_deny_status]; s->logs.tv_request = now; @@ -4414,8 +4426,7 @@ int http_process_request(struct stream *s, struct channel *req, int an_bit) * the fields will stay coherent and the URI will not move. * This should only be performed in the backend. */ - if ((s->be->cookie_name || sess->fe->capture_name) - && !(txn->flags & (TX_CLDENY|TX_CLTARPIT))) + if (s->be->cookie_name || sess->fe->capture_name) manage_client_side_cookies(s, req); /* add unique-id if "header-unique-id" is specified */