From c25e6f5efafbe5c8b73808e7876d394c3eed9265 Mon Sep 17 00:00:00 2001 From: Roberto Moreda Date: Sun, 2 Mar 2025 22:02:25 +0100 Subject: [PATCH] MINOR: log: detach prepare from parse message This commit adds a new function `prepare_log_message` to initialize log message buffers and metadata. This function sets default values for log level and facility, ensuring a consistent starting state for log processing. It also prepares the buffer and metadata fields, simplifying subsequent log parsing and construction. --- src/log.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/log.c b/src/log.c index 4e93aea9c..14f05bfd8 100644 --- a/src/log.c +++ b/src/log.c @@ -5375,6 +5375,24 @@ void app_log(struct list *loggers, struct buffer *tag, int level, const char *fo __send_log(NULL, loggers, tag, level, logline, data_len, default_rfc5424_sd_log_format, 2); } + +/* + * This function sets up the initial state for a log message by preparing + * the buffer, setting default values for the log level and facility, and + * initializing metadata fields. It is used before parsing or constructing + * a log message to ensure all fields are in a known state. + */ +static void prepare_log_message(char *buf, size_t buflen, int *level, int *facility, + struct ist *metadata, char **message, size_t *size) +{ + *level = *facility = -1; + + *message = buf; + *size = buflen; + + memset(metadata, 0, LOG_META_FIELDS*sizeof(struct ist)); +} + /* * This function parse a received log message , of size * it fills , and depending of the detected @@ -5391,13 +5409,6 @@ void parse_log_message(char *buf, size_t buflen, int *level, int *facility, char *p; int fac_level = 0; - *level = *facility = -1; - - *message = buf; - *size = buflen; - - memset(metadata, 0, LOG_META_FIELDS*sizeof(struct ist)); - p = buf; if (*size < 2 || *p != '<') return; @@ -5745,6 +5756,8 @@ void syslog_fd_handler(int fd) _HA_ATOMIC_INC(&cum_log_messages); proxy_inc_fe_req_ctr(l, l->bind_conf->frontend, 0); + prepare_log_message(buf->area, buf->data, &level, &facility, metadata, &message, &size); + parse_log_message(buf->area, buf->data, &level, &facility, metadata, &message, &size); process_send_log(NULL, &l->bind_conf->frontend->loggers, level, facility, metadata, message, size); @@ -5857,6 +5870,8 @@ static void syslog_io_handler(struct appctx *appctx) _HA_ATOMIC_INC(&cum_log_messages); proxy_inc_fe_req_ctr(l, frontend, 0); + prepare_log_message(buf->area, buf->data, &level, &facility, metadata, &message, &size); + parse_log_message(buf->area, buf->data, &level, &facility, metadata, &message, &size); process_send_log(NULL, &frontend->loggers, level, facility, metadata, message, size);