chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
abd55b1
)
service: properly signal permanent failure of a service to its socket
author
Lennart Poettering
<lennart@poettering.net>
Thu, 17 Jan 2013 03:52:19 +0000
(
04:52
+0100)
committer
Lennart Poettering
<lennart@poettering.net>
Thu, 17 Jan 2013 03:54:34 +0000
(
04:54
+0100)
This makes sure that a service is not indefinitely restarted in a tight
loop if it fails before it is able to process its socket.
This corrects the breakage introduced with
8d1b002a2e389e79a2414491523de549783abf73
. Shame on me.
src/core/service.c
patch
|
blob
|
history
diff --git
a/src/core/service.c
b/src/core/service.c
index ebd0baea8961b84ddaa5073e9efa714d12a70966..9e46dbae9478b7aab8177018c395da2e8cd3f68e 100644
(file)
--- a/
src/core/service.c
+++ b/
src/core/service.c
@@
-1521,6
+1521,9
@@
static void service_set_state(Service *s, ServiceState state) {
s->control_command_id = _SERVICE_EXEC_COMMAND_INVALID;
}
+ if (state == SERVICE_FAILED)
+ service_notify_sockets_dead(s, s->result == SERVICE_FAILURE_START_LIMIT);
+
if (state == SERVICE_DEAD ||
state == SERVICE_STOP ||
state == SERVICE_STOP_SIGTERM ||
@@
-1528,7
+1531,6
@@
static void service_set_state(Service *s, ServiceState state) {
state == SERVICE_STOP_POST ||
state == SERVICE_FINAL_SIGTERM ||
state == SERVICE_FINAL_SIGKILL ||
- state == SERVICE_FAILED ||
state == SERVICE_AUTO_RESTART)
service_notify_sockets_dead(s, false);