Pārlūkot izejas kodu

Fix stupid deadlock in the logger.

rspamd-0.7
Vsevolod Stakhov pirms 9 gadiem
vecāks
revīzija
e43cd79fcb
1 mainītis faili ar 7 papildinājumiem un 9 dzēšanām
  1. 7
    9
      src/libutil/logger.c

+ 7
- 9
src/libutil/logger.c Parādīt failu

@@ -113,19 +113,17 @@ direct_write_log_line (rspamd_logger_t *rspamd_log,
}
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 == EIO || errno == EINTR) {
/* Descriptor is somehow invalid, try to restart */
rspamd_log_reopen (rspamd_log);
if (write (rspamd_log->fd, errmsg, r) != -1) {
/* Try again */
direct_write_log_line (rspamd_log, data, count, is_iov);
}
}
else if (errno == EFAULT || errno == EINVAL || errno == EFBIG ||
if (errno == EFAULT || errno == EINVAL || errno == EFBIG ||
errno == ENOSPC) {
/* Rare case */
rspamd_log->throttling = TRUE;

Notiek ielāde…
Atcelt
Saglabāt