]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: proxy: Add references on http replies for proxy error messages
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 14 May 2020 15:34:31 +0000 (17:34 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 20 May 2020 16:27:13 +0000 (18:27 +0200)
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
src/http_htx.c

index 35ca0ad108ce459ff7ca1b5a884335370e310d55..62fc435f31cc6b06881b921943fc935fb18997c6 100644 (file)
@@ -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 */
index b830c736e61bc6d7ed7b99a5b2fc1ff1b328173b..18ac47ce482af0d7577fa8723dd7b9da8366ec30 100644 (file)
@@ -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);