dcavalca / rpms / systemd

Forked from rpms/systemd 3 years ago
Clone
a52f674
From b7f2e5ac769ca4d9b7d28050ec662104635a7822 Mon Sep 17 00:00:00 2001
b12ff75
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
b12ff75
Date: Sat, 14 Dec 2013 11:54:26 -0500
b12ff75
Subject: [PATCH] logging: reduce send timeout to something more sensible
b12ff75
b12ff75
For a user, the timeout of 1 min per message seems equivalent to a hang.
b12ff75
If journald cannot process a message from PID1 for 10 ms then something
b12ff75
is significantly wrong. It's better to lose the message and continue.
a52f674
a52f674
(cherry picked from commit 4d89874af6a798744a32deb314001a13a28f0559)
b12ff75
---
b12ff75
 src/shared/log.c       | 5 ++++-
b12ff75
 src/shared/time-util.c | 7 +++----
b12ff75
 2 files changed, 7 insertions(+), 5 deletions(-)
b12ff75
b12ff75
diff --git a/src/shared/log.c b/src/shared/log.c
1cc3df3
index de770caefa..2267764859 100644
b12ff75
--- a/src/shared/log.c
b12ff75
+++ b/src/shared/log.c
b12ff75
@@ -126,7 +126,10 @@ static int create_log_socket(int type) {
b12ff75
         /* We need a blocking fd here since we'd otherwise lose
b12ff75
         messages way too early. However, let's not hang forever in the
b12ff75
         unlikely case of a deadlock. */
b12ff75
-        timeval_store(&tv, 1*USEC_PER_MINUTE);
b12ff75
+        if (getpid() == 1)
b12ff75
+                timeval_store(&tv, 10 * USEC_PER_MSEC);
b12ff75
+        else
b12ff75
+                timeval_store(&tv, 10 * USEC_PER_SEC);
b12ff75
         setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
b12ff75
 
b12ff75
         return fd;
b12ff75
diff --git a/src/shared/time-util.c b/src/shared/time-util.c
1cc3df3
index d31401bb5c..505b280259 100644
b12ff75
--- a/src/shared/time-util.c
b12ff75
+++ b/src/shared/time-util.c
b12ff75
@@ -141,12 +141,11 @@ struct timeval *timeval_store(struct timeval *tv, usec_t u) {
b12ff75
         if (u == (usec_t) -1) {
b12ff75
                 tv->tv_sec = (time_t) -1;
b12ff75
                 tv->tv_usec = (suseconds_t) -1;
b12ff75
-                return tv;
b12ff75
+        } else {
b12ff75
+                tv->tv_sec = (time_t) (u / USEC_PER_SEC);
b12ff75
+                tv->tv_usec = (suseconds_t) (u % USEC_PER_SEC);
b12ff75
         }
b12ff75
 
b12ff75
-        tv->tv_sec = (time_t) (u / USEC_PER_SEC);
b12ff75
-        tv->tv_usec = (suseconds_t) (u % USEC_PER_SEC);
b12ff75
-
b12ff75
         return tv;
b12ff75
 }
b12ff75