Hi all,

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.

Regards,

Bertrand

diff --git a/src/proto_http.c b/src/proto_http.c
index 0c37736..6ab14ce 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 */

Reply via email to