From 40e85696767f08a3ff80bbd195f1677e48a4862d Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 14 May 2020 17:34:31 +0200 Subject: [PATCH] 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. --- include/types/proxy.h | 1 + src/http_htx.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/include/types/proxy.h b/include/types/proxy.h index 35ca0ad10..62fc435f3 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 b830c736e..18ac47ce4 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);