From: Christopher Faulet Date: Wed, 26 Jul 2017 13:33:35 +0000 (+0200) Subject: MINOR: logs: Use dedicated function to init/deinit log buffers X-Git-Tag: v1.8-dev3~127 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0132d06f6880ca016f62ce418786d7d2bcb44d2b;p=thirdparty%2Fhaproxy.git MINOR: logs: Use dedicated function to init/deinit log buffers Now, we use init_log_buffers and deinit_log_buffers to, respectively, initialize and deinitialize log buffers used for syslog messages. These functions have been introduced to be used by threads, to deal with thread-local log buffers. --- diff --git a/include/proto/log.h b/include/proto/log.h index 2d4ca84f17..72ff744fbb 100644 --- a/include/proto/log.h +++ b/include/proto/log.h @@ -53,6 +53,11 @@ extern char *logline_rfc5424; */ void init_log(); + +/* Initialize/Deinitialize log buffers used for syslog messages */ +int init_log_buffers(); +void deinit_log_buffers(); + /* * Builds a log line. */ diff --git a/src/cfgparse.c b/src/cfgparse.c index c2115e6a2b..d491560565 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -1420,10 +1420,11 @@ int cfg_parse_global(const char *file, int linenum, char **args, int kwm) if (logsrv->maxlen > global.max_syslog_len) { global.max_syslog_len = logsrv->maxlen; - logheader = my_realloc2(logheader, global.max_syslog_len + 1); - logheader_rfc5424 = my_realloc2(logheader_rfc5424, global.max_syslog_len + 1); - logline = my_realloc2(logline, global.max_syslog_len + 1); - logline_rfc5424 = my_realloc2(logline_rfc5424, global.max_syslog_len + 1); + if (!init_log_buffers()) { + Alert("parsing [%s:%d] : failed to initialize log buffers.\n", file, linenum); + err_code |= ERR_ALERT | ERR_FATAL; + goto out; + } } /* after the length, a format may be specified */ @@ -6082,10 +6083,11 @@ stats_error_parsing: if (logsrv->maxlen > global.max_syslog_len) { global.max_syslog_len = logsrv->maxlen; - logheader = my_realloc2(logheader, global.max_syslog_len + 1); - logheader_rfc5424 = my_realloc2(logheader_rfc5424, global.max_syslog_len + 1); - logline = my_realloc2(logline, global.max_syslog_len + 1); - logline_rfc5424 = my_realloc2(logline_rfc5424, global.max_syslog_len + 1); + if (!init_log_buffers()) { + Alert("parsing [%s:%d] : failed to initialize log buffers.\n", file, linenum); + err_code |= ERR_ALERT | ERR_FATAL; + goto out; + } } /* after the length, a format may be specified */ diff --git a/src/haproxy.c b/src/haproxy.c index efc4da552a..7c925eaea7 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -2107,6 +2107,7 @@ void deinit(void) cfg_unregister_sections(); + deinit_log_buffers(); deinit_trash_buffers(); protocol_unbind_all(); diff --git a/src/log.c b/src/log.c index e9a8a7d7c0..5c42f6b2a2 100644 --- a/src/log.c +++ b/src/log.c @@ -1322,6 +1322,31 @@ void init_log() } } +/* Initialize log buffers used for syslog messages */ +int init_log_buffers() +{ + logheader = my_realloc2(logheader, global.max_syslog_len + 1); + logheader_rfc5424 = my_realloc2(logheader_rfc5424, global.max_syslog_len + 1); + logline = my_realloc2(logline, global.max_syslog_len + 1); + logline_rfc5424 = my_realloc2(logline_rfc5424, global.max_syslog_len + 1); + if (!logheader || !logline_rfc5424 || !logline || !logline_rfc5424) + return 0; + return 1; +} + +/* Deinitialize log buffers used for syslog messages */ +void deinit_log_buffers() +{ + free(logheader); + free(logheader_rfc5424); + free(logline); + free(logline_rfc5424); + logheader = NULL; + logheader_rfc5424 = NULL; + logline = NULL; + logline_rfc5424 = NULL; +} + /* Builds a log line in based on , and stops before reaching * characters. Returns the size of the output string in characters, * not counting the trailing zero which is always added if the resulting size