From: msizanoen1 Date: Tue, 2 May 2023 09:59:07 +0000 (+0700) Subject: core: check for SERVICE_RELOAD_NOTIFY in manager_dbus_is_running X-Git-Tag: v254-rc1~573 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=845824acddf2e7e08c94afe7cfee6e50a682c947;p=thirdparty%2Fsystemd.git core: check for SERVICE_RELOAD_NOTIFY in manager_dbus_is_running This ensures that systemd won't erronously disconnect from the system bus in case a bus recheck is triggered immediately after the bus service emits `RELOADING=1`. This fixes an issue where systemd-logind sometimes randomly stops receiving `UnitRemoved` after a system update. This also handles SERVICE_RELOAD_SIGNAL just in case somebody ever creates a D-Bus broker implementation that uses `Type=notify-reload`. --- diff --git a/src/core/manager.c b/src/core/manager.c index 9e91aba6327..9226cd2ab7d 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1822,7 +1822,11 @@ static bool manager_dbus_is_running(Manager *m, bool deserialized) { u = manager_get_unit(m, SPECIAL_DBUS_SERVICE); if (!u) return false; - if (!IN_SET((deserialized ? SERVICE(u)->deserialized_state : SERVICE(u)->state), SERVICE_RUNNING, SERVICE_RELOAD)) + if (!IN_SET((deserialized ? SERVICE(u)->deserialized_state : SERVICE(u)->state), + SERVICE_RUNNING, + SERVICE_RELOAD, + SERVICE_RELOAD_NOTIFY, + SERVICE_RELOAD_SIGNAL)) return false; return true;