From e3841395ad043fbb356225ac09714eb178286db6 Mon Sep 17 00:00:00 2001 From: Maxime de Roucy Date: Wed, 18 May 2016 23:13:38 +0200 Subject: [PATCH] BUG/MEDIUM: init: don't use environment locale MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch removes setlocale from the main function. It was introduced by commit 379d9c7 ("MEDIUM: init: allow directory as argument of -f") in 1.7-dev a few commits ago after a discussion on the mailing list. Some regex may have different behaviours depending on the locale. Some LUA scripts may change their behaviour too (http://lua-users.org/wiki/LuaLocales). Without this patch (haproxy is using setlocale) : $ cat locale.cfg defaults mode http frontend test bind :9000 mode http use_backend testbk if { hdr_reg(X-Test) ^\w+$ } backend testbk mode http server s 127.0.0.1:80 $ LANG=fr_FR.UTF-8 ./haproxy -f locale.cfg $ curl -i -H "X-Test: échec" localhost:9000 HTTP/1.1 200 OK ... $ LANG=C ./haproxy -f locale.cfg $ curl -i -H "X-Test: échec" localhost:9000 HTTP/1.0 503 Service Unavailable ... --- doc/haproxy.1 | 4 ++-- doc/management.txt | 2 +- src/haproxy.c | 4 ---- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/doc/haproxy.1 b/doc/haproxy.1 index cc9c702b3..73c2aee76 100644 --- a/doc/haproxy.1 +++ b/doc/haproxy.1 @@ -35,8 +35,8 @@ instances without risking the system's stability. .TP \fB\-f \fP Specify configuration file or directory path. If the argument is a directory -the files (and only files) it containes are added in lexical order (respecting -LC_COLLATE) ; only non hidden files with ".cfg" extension are added. +the files (and only files) it containes are added in lexical order (using +LC_COLLATE=C) ; only non hidden files with ".cfg" extension are added. .TP \fB\-L \fP diff --git a/doc/management.txt b/doc/management.txt index 4f0af1062..119c3fa6d 100644 --- a/doc/management.txt +++ b/doc/management.txt @@ -136,7 +136,7 @@ list of options is : -f : adds to the list of configuration files to be loaded. If is a directory, all the files (and only files) it - containes are added in lexical order (respecting LC_COLLATE) to the list of + containes are added in lexical order (using LC_COLLATE=C) to the list of configuration files to be loaded ; only files with ".cfg" extension are added, only non hidden files (not prefixed with ".") are added. Configuration files are loaded and processed in their declaration order. diff --git a/src/haproxy.c b/src/haproxy.c index 582ad8203..c6d1505d9 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -1752,9 +1751,6 @@ int main(int argc, char **argv) char errmsg[100]; int pidfd = -1; - /* get the locale from the environment variables */ - setlocale(LC_ALL, ""); - init(argc, argv); signal_register_fct(SIGQUIT, dump, SIGQUIT); signal_register_fct(SIGUSR1, sig_soft_stop, SIGUSR1);