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 2d4ca84..72ff744 100644
--- a/include/proto/log.h
+++ b/include/proto/log.h
@@ -53,6 +53,11 @@
*/
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 c2115e6..d491560 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1420,10 +1420,11 @@
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 @@
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 efc4da5..7c925ea 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -2107,6 +2107,7 @@
cfg_unregister_sections();
+ deinit_log_buffers();
deinit_trash_buffers();
protocol_unbind_all();
diff --git a/src/log.c b/src/log.c
index e9a8a7d..5c42f6b 100644
--- a/src/log.c
+++ b/src/log.c
@@ -1322,6 +1322,31 @@
}
}
+/* 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 <dst> based on <list_format>, and stops before reaching
* <maxsize> characters. Returns the size of the output string in characters,
* not counting the trailing zero which is always added if the resulting size