summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-10-03 13:37:21 +0200
committerLennart Poettering <lennart@poettering.net>2015-10-03 13:37:21 +0200
commit95c906ae0727123e45a9d88782133cac4554ddcd (patch)
tree93fb199cbcc5982fefe405b11a1857ed4a545226 /src
parent6c1695be47b2830c79e128e4d05d760eb862184e (diff)
downloadsystemd-95c906ae0727123e45a9d88782133cac4554ddcd.tar.gz
systemd-95c906ae0727123e45a9d88782133cac4554ddcd.tar.bz2
systemd-95c906ae0727123e45a9d88782133cac4554ddcd.zip
core: don't unset reload result, unless we begin a start or reload operation
Much like the result of the service itself we should not reset the reload result unless we actually start from the beginning, so that clients can query it at any time. Specifically, let's reset the result states only when we begin with a start operation (for both the main result, and the reload result), when we begin with a reload operation (only for the load result), or when the use explicitly asks for that via "systemctl reset-failed". This is a more generic fix for #1447. Fixes #1447.
Diffstat (limited to 'src')
-rw-r--r--src/core/service.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/core/service.c b/src/core/service.c
index cb0394f930..3bb0d913b4 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -884,7 +884,6 @@ static void service_set_state(Service *s, ServiceState state) {
log_unit_debug(UNIT(s), "Changed %s -> %s", service_state_to_string(old_state), service_state_to_string(state));
unit_notify(UNIT(s), table[old_state], table[state], s->reload_result == SERVICE_SUCCESS);
- s->reload_result = SERVICE_SUCCESS;
}
static int service_coldplug(Unit *u) {
@@ -1778,6 +1777,7 @@ static void service_enter_reload(Service *s) {
assert(s);
service_unwatch_control_pid(s);
+ s->reload_result = SERVICE_SUCCESS;
s->control_command = s->exec_command[SERVICE_EXEC_RELOAD];
if (s->control_command) {