From: Christopher Faulet Date: Thu, 14 May 2020 15:34:31 +0000 (+0200) Subject: MINOR: proxy: Add references on http replies for proxy error messages X-Git-Tag: v2.2-dev8~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=40e85696767f08a3ff80bbd195f1677e48a4862d;p=thirdparty%2Fhaproxy.git MINOR: proxy: Add references on http replies for proxy error messages Error messages defined in proxy section or inherited from a default section are now also referenced using an array of http replies. This is done during the configuration validity check. --- diff --git a/include/types/proxy.h b/include/types/proxy.h index 35ca0ad108..62fc435f31 100644 --- a/include/types/proxy.h +++ b/include/types/proxy.h @@ -409,6 +409,7 @@ struct proxy { char *check_command; /* Command to use for external agent checks */ char *check_path; /* PATH environment to use for external agent checks */ struct buffer *errmsg[HTTP_ERR_SIZE]; /* default or customized error messages for known errors */ + struct http_reply *replies[HTTP_ERR_SIZE]; /* HTTP replies for known errors */ int uuid; /* universally unique proxy ID, used for SNMP */ unsigned int backlog; /* force the frontend's listen backlog */ unsigned long bind_proc; /* bitmask of processes using this proxy */ diff --git a/src/http_htx.c b/src/http_htx.c index b830c736e6..18ac47ce48 100644 --- a/src/http_htx.c +++ b/src/http_htx.c @@ -1852,6 +1852,7 @@ static int proxy_check_errors(struct proxy *px) /* errorfile */ rc = http_get_status_idx(conf_err->info.errorfile.status); px->errmsg[rc] = conf_err->info.errorfile.msg; + px->replies[rc] = conf_err->info.errorfile.reply; } else { /* errorfiles */ @@ -1872,8 +1873,10 @@ static int proxy_check_errors(struct proxy *px) free(conf_err->info.errorfiles.name); for (rc = 0; rc < HTTP_ERR_SIZE; rc++) { if (conf_err->info.errorfiles.status[rc] > 0) { - if (http_errs->errmsg[rc]) + if (http_errs->errmsg[rc]) { px->errmsg[rc] = http_errs->errmsg[rc]; + px->replies[rc] = http_errs->replies[rc]; + } else if (conf_err->info.errorfiles.status[rc] == 2) ha_warning("config: proxy '%s' : status '%d' not declared in" " http-errors section '%s' (at %s:%d).\n", @@ -1934,6 +1937,7 @@ int proxy_dup_default_conf_errors(struct proxy *curpx, struct proxy *defpx, char if (conf_err->type == 1) { new_conf_err->info.errorfile.status = conf_err->info.errorfile.status; new_conf_err->info.errorfile.msg = conf_err->info.errorfile.msg; + new_conf_err->info.errorfile.reply = conf_err->info.errorfile.reply; } else { new_conf_err->info.errorfiles.name = strdup(conf_err->info.errorfiles.name);