diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-03-04 13:07:07 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-03-04 13:07:33 +0000 |
commit | b80ddf78c8508210aa1f00dc1654593a2f810c24 (patch) | |
tree | bb879a6b2de7d8538fbfd96a4354992b027a85cd /src/libutil | |
parent | fadd570a71a8b86e8d9be5ff9dbe53f2ead4ac9f (diff) | |
download | rspamd-b80ddf78c8508210aa1f00dc1654593a2f810c24.tar.gz rspamd-b80ddf78c8508210aa1f00dc1654593a2f810c24.zip |
[Minor] Respect forced flag when logging is disabled
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/logger.c | 100 |
1 files changed, 49 insertions, 51 deletions
diff --git a/src/libutil/logger.c b/src/libutil/logger.c index 04291d8e9..920c5231b 100644 --- a/src/libutil/logger.c +++ b/src/libutil/logger.c @@ -136,69 +136,67 @@ direct_write_log_line (rspamd_logger_t *rspamd_log, fd = rspamd_log->fd; } - if (rspamd_log->enabled) { - if (!rspamd_log->no_lock) { + if (!rspamd_log->no_lock) { #ifndef DISABLE_PTHREAD_MUTEX - if (rspamd_log->mtx) { - rspamd_mempool_lock_mutex (rspamd_log->mtx); - } - else { - rspamd_file_lock (fd, FALSE); - } -#else + if (rspamd_log->mtx) { + rspamd_mempool_lock_mutex (rspamd_log->mtx); + } + else { rspamd_file_lock (fd, FALSE); -#endif } +#else + rspamd_file_lock (fd, FALSE); +#endif + } + + if (is_iov) { + iov = (struct iovec *) data; + r = writev (fd, iov, count); + } + else { + line = (const gchar *) data; + r = write (fd, line, count); + } - if (is_iov) { - iov = (struct iovec *) data; - r = writev (fd, iov, count); + if (!rspamd_log->no_lock) { +#ifndef DISABLE_PTHREAD_MUTEX + if (rspamd_log->mtx) { + rspamd_mempool_unlock_mutex (rspamd_log->mtx); } else { - line = (const gchar *) data; - r = write (fd, line, count); + rspamd_file_unlock (fd, FALSE); } - - if (!rspamd_log->no_lock) { -#ifndef DISABLE_PTHREAD_MUTEX - if (rspamd_log->mtx) { - rspamd_mempool_unlock_mutex (rspamd_log->mtx); - } - else { - rspamd_file_unlock (fd, FALSE); - } #else - rspamd_file_unlock (fd, FALSE); + rspamd_file_unlock (fd, FALSE); #endif - } + } - if (r == -1) { - /* We cannot write message to file, so we need to detect error and make decision */ - if (errno == EINTR) { - /* Try again */ - direct_write_log_line (rspamd_log, data, count, is_iov); - return; - } + if (r == -1) { + /* We cannot write message to file, so we need to detect error and make decision */ + if (errno == EINTR) { + /* Try again */ + direct_write_log_line (rspamd_log, data, count, is_iov); + return; + } - r = rspamd_snprintf (errmsg, - sizeof (errmsg), - "direct_write_log_line: cannot write log line: %s", - strerror (errno)); - if (errno == EFAULT || errno == EINVAL || errno == EFBIG || + r = rspamd_snprintf (errmsg, + sizeof (errmsg), + "direct_write_log_line: cannot write log line: %s", + strerror (errno)); + if (errno == EFAULT || errno == EINVAL || errno == EFBIG || errno == ENOSPC) { - /* Rare case */ - rspamd_log->throttling = TRUE; - rspamd_log->throttling_time = time (NULL); - } - else if (errno == EPIPE || errno == EBADF) { - /* We write to some pipe and it disappears, disable logging or we has opened bad file descriptor */ - rspamd_log->enabled = FALSE; - } + /* Rare case */ + rspamd_log->throttling = TRUE; + rspamd_log->throttling_time = time (NULL); } - else if (rspamd_log->throttling) { - rspamd_log->throttling = FALSE; + else if (errno == EPIPE || errno == EBADF) { + /* We write to some pipe and it disappears, disable logging or we has opened bad file descriptor */ + rspamd_log->enabled = FALSE; } } + else if (rspamd_log->throttling) { + rspamd_log->throttling = FALSE; + } } static void @@ -807,7 +805,7 @@ syslog_log_function (const gchar *module, const gchar *id, unsigned i; gint syslog_level; - if (!rspamd_log->enabled) { + if (!(level_flags & RSPAMD_LOG_FORCED) && !rspamd_log->enabled) { return; } /* Detect level */ @@ -850,12 +848,12 @@ file_log_function (const gchar *module, const gchar *id, gboolean got_time = FALSE; rspamd_logger_t *rspamd_log = arg; - if (!rspamd_log->enabled) { + if (!(level_flags & RSPAMD_LOG_FORCED) && !rspamd_log->enabled) { return; } /* Check throttling due to write errors */ - if (rspamd_log->throttling) { + if (!(level_flags & RSPAMD_LOG_FORCED) && rspamd_log->throttling) { now = time (NULL); if (rspamd_log->throttling_time != now) { rspamd_log->throttling_time = now; |