]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
unit : allow any unit which propagates reloads to be reloaded
author\83©rÃ\83©my Rosen <jeremy.rosen@enst-bretagne.fr>
Sat, 22 Jul 2017 15:30:57 +0000 (17:30 +0200)
committerJérémy Rosen <jeremy.rosen@enst-bretagne.fr>
Sun, 10 Sep 2017 16:53:26 +0000 (18:53 +0200)
src/core/unit.c

index 2037de6d332e7f51dfc477edcc0c9f17c2a15387..9eda9643f6039f182e73efa774f921186aa15d0d 100644 (file)
@@ -1759,19 +1759,25 @@ int unit_reload(Unit *u) {
 
         unit_add_to_dbus_queue(u);
 
+        if (!UNIT_VTABLE(u)->reload) {
+                /* Unit doesn't have a reload function, but we need to propagate the reload anyway */
+                unit_notify(u, unit_active_state(u), unit_active_state(u), true);
+                return 0;
+        }
+
         return UNIT_VTABLE(u)->reload(u);
 }
 
 bool unit_can_reload(Unit *u) {
         assert(u);
 
-        if (!UNIT_VTABLE(u)->reload)
-                return false;
+        if (UNIT_VTABLE(u)->can_reload)
+                return UNIT_VTABLE(u)->can_reload(u);
 
-        if (!UNIT_VTABLE(u)->can_reload)
+        if (!set_isempty(u->dependencies[UNIT_PROPAGATES_RELOAD_TO]))
                 return true;
 
-        return UNIT_VTABLE(u)->can_reload(u);
+        return UNIT_VTABLE(u)->reload;
 }
 
 static void unit_check_unneeded(Unit *u) {