MEDIUM: chunks: Realloc trash buffers only after the config is parsed and checked
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 29 Aug 2017 14:46:57 +0000 (16:46 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 5 Sep 2017 08:27:46 +0000 (10:27 +0200)
Trash buffers are reallocated when "tune.bufsize" parameter is changed. Here, we
just move the realloc after the configuration parsing.

Given that the config parser doesn't rely on the trash size, it should be
harmless.

src/cfgparse.c
src/haproxy.c

index 7e939ee..c2115e6 100644 (file)
@@ -773,11 +773,6 @@ int cfg_parse_global(const char *file, int linenum, char **args, int kwm)
                        err_code |= ERR_ALERT | ERR_FATAL;
                        goto out;
                }
-               if (!init_trash_buffers()) {
-                       Alert("parsing [%s:%d] : failed to initialize trash buffers.\n", file, linenum);
-                       err_code |= ERR_ALERT | ERR_FATAL;
-                       goto out;
-               }
        }
        else if (!strcmp(args[0], "tune.maxrewrite")) {
                if (alertif_too_many_args(1, file, linenum, args, &err_code))
index c27fca0..efc4da5 100644 (file)
@@ -1712,6 +1712,12 @@ static void init(int argc, char **argv)
        if (global.nbproc < 1)
                global.nbproc = 1;
 
+       /* Realloc trash buffers because global.tune.bufsize may have changed */
+       if (!init_trash_buffers()) {
+               Alert("failed to initialize trash buffers.\n");
+               exit(1);
+       }
+
        swap_buffer = calloc(1, global.tune.bufsize);
        get_http_auth_buff = calloc(1, global.tune.bufsize);
        static_table_key = calloc(1, sizeof(*static_table_key));