From 7fc7ebd5785629074297ee324b22e0aee9ad00f9 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 16 Sep 2014 16:21:19 +0200 Subject: [PATCH 13/13] MINOR: config: detect the case where a tcp-request content rule has no inspect-delay If a frontend has any tcp-request content rule relying on request contents without any inspect delay, we now emit a warning as this will randomly match. This can be backported to 1.5 as it reduces the support effort. (cherry picked from commit e42bd96d0acc38ea7c546c8de8115ffd1dd6c3f3) --- src/cfgparse.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/cfgparse.c b/src/cfgparse.c index 9ff44e9..f723a3a 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -6998,6 +6998,29 @@ out_uri_auth_compat: newsrv = newsrv->next; } + /* check if we have a frontend with "tcp-request content" looking at L7 + * with no inspect-delay + */ + if ((curproxy->cap & PR_CAP_FE) && !curproxy->tcp_req.inspect_delay) { + list_for_each_entry(trule, &curproxy->tcp_req.inspect_rules, list) { + if (trule->action == TCP_ACT_CAPTURE && + !(trule->act_prm.cap.expr->fetch->val & SMP_VAL_FE_SES_ACC)) + break; + if ((trule->action >= TCP_ACT_TRK_SC0 && trule->action <= TCP_ACT_TRK_SCMAX) && + !(trule->act_prm.trk_ctr.expr->fetch->val & SMP_VAL_FE_SES_ACC)) + break; + } + + if (&trule->list != &curproxy->tcp_req.inspect_rules) { + Warning("config : %s '%s' : some 'tcp-request content' rules explicitly depending on request" + " contents were found in a frontend without any 'tcp-request inspect-delay' setting." + " This means that these rules will randomly find their contents. This can be fixed by" + " setting the tcp-request inspect-delay.\n", + proxy_type_str(curproxy), curproxy->id); + err_code |= ERR_WARN; + } + } + if (curproxy->cap & PR_CAP_FE) { if (!curproxy->accept) curproxy->accept = frontend_accept; -- 1.8.5.5