From 503f5ae9f8df69485378c55bd952b2ebe593220e Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 24 Sep 2015 15:30:04 +0100 Subject: [PATCH] Correctly set locale before start. --- src/libutil/util.c | 20 ++++++++++++++------ src/rspamd.c | 14 +++++--------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/libutil/util.c b/src/libutil/util.c index 496bd0298..11e3248ac 100644 --- a/src/libutil/util.c +++ b/src/libutil/util.c @@ -46,6 +46,9 @@ #ifdef HAVE_READPASSPHRASE_H #include #endif +#ifdef HAVE_LOCALE_H +#include +#endif #ifdef __APPLE__ #include @@ -1920,12 +1923,17 @@ rspamd_init_libs (void) ottery_init (NULL); rspamd_cryptobox_init (); -#ifdef HAVE_SETLOCALE - /* Set locale setting to C locale to avoid problems in future */ - setlocale (LC_ALL, "C"); - setlocale (LC_CTYPE, "C"); - setlocale (LC_MESSAGES, "C"); - setlocale (LC_TIME, "C"); +#ifdef HAVE_LOCALE_H + if (getenv ("LANG") == NULL) { + setlocale (LC_ALL, "C"); + setlocale (LC_CTYPE, "C"); + setlocale (LC_MESSAGES, "C"); + setlocale (LC_TIME, "C"); + } + else { + /* Just set the default locale */ + setlocale (LC_ALL, ""); + } #endif #ifdef HAVE_OPENSSL diff --git a/src/rspamd.c b/src/rspamd.c index 48874cffe..bc13f6e47 100644 --- a/src/rspamd.c +++ b/src/rspamd.c @@ -42,10 +42,6 @@ #include #include #endif -#ifdef HAVE_LOCALE_H -#include -#define HAVE_SETLOCALE 1 -#endif #define msg_err_main(...) rspamd_default_log_function (G_LOG_LEVEL_CRITICAL, \ rspamd_main->server_pool->tag.tagname, rspamd_main->server_pool->tag.uid, \ @@ -101,7 +97,7 @@ static gboolean gen_keypair = FALSE; static gboolean encrypt_password = FALSE; /* List of workers that are pending to start */ static GList *workers_pending = NULL; -static GHashTable *vars = NULL; +static GHashTable *ucl_vars = NULL; #ifdef HAVE_SA_SIGINFO static siginfo_t static_sg[64]; @@ -805,7 +801,7 @@ load_rspamd_config (struct rspamd_config *cfg, gboolean init_modules) cfg->compiled_workers = workers; if (!rspamd_config_read (cfg, cfg->cfg_name, NULL, - config_logger, rspamd_main, vars)) { + config_logger, rspamd_main, ucl_vars)) { return FALSE; } @@ -1117,12 +1113,12 @@ main (gint argc, gchar **argv, gchar **env) v = g_strdup (t + 1); *t = '\0'; - if (vars == NULL) { - vars = g_hash_table_new_full (rspamd_strcase_hash, + if (ucl_vars == NULL) { + ucl_vars = g_hash_table_new_full (rspamd_strcase_hash, rspamd_strcase_equal, g_free, g_free); } - g_hash_table_insert (vars, k, v); + g_hash_table_insert (ucl_vars, k, v); } } } -- 2.39.5