chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
service: don't hit an assert if a service unit changes type and we get a spurious...
[elogind.git]
/
src
/
core
/
service.c
diff --git
a/src/core/service.c
b/src/core/service.c
index 807b34267f19622eaf984a82acd3a5abc4e7e6b4..7b5ff6d1ac87673df12dec69b86a27ae940f991e 100644
(file)
--- a/
src/core/service.c
+++ b/
src/core/service.c
@@
-2961,12
+2961,10
@@
static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
else
service_enter_signal(s, SERVICE_FINAL_SIGTERM, f);
break;
else
service_enter_signal(s, SERVICE_FINAL_SIGTERM, f);
break;
- } else {
- assert(s->type == SERVICE_DBUS || s->type == SERVICE_NOTIFY);
-
- /* Fall through */
}
}
+ /* Fall through */
+
case SERVICE_RUNNING:
service_enter_running(s, f);
break;
case SERVICE_RUNNING:
service_enter_running(s, f);
break;
@@
-3036,7
+3034,9
@@
static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
break;
case SERVICE_START:
break;
case SERVICE_START:
- assert(s->type == SERVICE_FORKING);
+ if (s->type != SERVICE_FORKING)
+ /* Maybe spurious event due to a reload that changed the type? */
+ break;
if (f != SERVICE_SUCCESS) {
service_enter_signal(s, SERVICE_FINAL_SIGTERM, f);
if (f != SERVICE_SUCCESS) {
service_enter_signal(s, SERVICE_FINAL_SIGTERM, f);