From: Willy Tarreau Date: Sat, 24 Mar 2012 07:33:05 +0000 (+0100) Subject: MINOR: config: disable header captures in TCP mode and complain X-Git-Tag: v1.5-dev8~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9a54e13788c3a81c59190cb7196b9c93fa06a2de;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/cfgparse.c b/src/cfgparse.c index 6f1df9c997..5996e26728 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;