From 9a54e13788c3a81c59190cb7196b9c93fa06a2de Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sat, 24 Mar 2012 08:33:05 +0100 Subject: [PATCH] MINOR: config: disable header captures in TCP mode and complain In order to help users fix their configs, report a warning when a capture has been set on a non-HTTP frontend. This should be backported to 1.4. --- src/cfgparse.c | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/src/cfgparse.c b/src/cfgparse.c index 6f1df9c99..5996e2672 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -6062,14 +6062,33 @@ out_uri_auth_compat: } /* The small pools required for the capture lists */ - if (curproxy->nb_req_cap) - curproxy->req_cap_pool = create_pool("ptrcap", - curproxy->nb_req_cap * sizeof(char *), - MEM_F_SHARED); - if (curproxy->nb_rsp_cap) - curproxy->rsp_cap_pool = create_pool("ptrcap", - curproxy->nb_rsp_cap * sizeof(char *), - MEM_F_SHARED); + if (curproxy->nb_req_cap) { + if (curproxy->mode == PR_MODE_HTTP) { + curproxy->req_cap_pool = create_pool("ptrcap", + curproxy->nb_req_cap * sizeof(char *), + MEM_F_SHARED); + } else { + Warning("config : 'capture request header' ignored for %s '%s' as it requires HTTP mode.\n", + proxy_type_str(curproxy), curproxy->id); + err_code |= ERR_WARN; + curproxy->to_log &= ~LW_REQHDR; + curproxy->nb_req_cap = 0; + } + } + + if (curproxy->nb_rsp_cap) { + if (curproxy->mode == PR_MODE_HTTP) { + curproxy->rsp_cap_pool = create_pool("ptrcap", + curproxy->nb_rsp_cap * sizeof(char *), + MEM_F_SHARED); + } else { + Warning("config : 'capture response header' ignored for %s '%s' as it requires HTTP mode.\n", + proxy_type_str(curproxy), curproxy->id); + err_code |= ERR_WARN; + curproxy->to_log &= ~LW_REQHDR; + curproxy->nb_rsp_cap = 0; + } + } /* first, we will invert the servers list order */ newsrv = NULL;