core: propagate service state to socket in more load states

It makes sense to filter state changes for some load states that
shouldn't happen, but the common cases should be accepted, because they
might happen during runtime when "systemctl daemon-reload" is issued and
unit files changed state in between. Otherwise we lose events.

Fixes: #4708
This commit is contained in:
Lennart Poettering 2020-01-09 11:51:40 +01:00
parent 19212f2781
commit 4c2ef32767
1 changed files with 6 additions and 1 deletions

View File

@ -3257,7 +3257,12 @@ static void socket_trigger_notify(Unit *u, Unit *other) {
assert(other);
/* Filter out invocations with bogus state */
if (other->load_state != UNIT_LOADED || other->type != UNIT_SERVICE)
if (!IN_SET(other->load_state,
UNIT_LOADED,
UNIT_NOT_FOUND,
UNIT_BAD_SETTING,
UNIT_ERROR,
UNIT_MASKED) || other->type != UNIT_SERVICE)
return;
/* Don't propagate state changes from the service if we are already down */