chiark / gitweb /
logind: don't misunderstand UnitRemoved signals during reloading
[elogind.git] / src / machine / machined.c
index 3cf7f92f964d6c63cb775e4123a3f2ff600e6d98..c7c4ecc375d83cdab2855b3debc6278872a8f877 100644 (file)
@@ -98,7 +98,7 @@ int manager_add_machine(Manager *m, const char *name, Machine **_machine) {
         }
 
         machine = machine_new(m, name);
-        if (!m)
+        if (!machine)
                 return -ENOMEM;
 
         if (_machine)
@@ -210,6 +210,18 @@ static int manager_connect_bus(Manager *m) {
                 dbus_error_free(&error);
         }
 
+        dbus_bus_add_match(m->bus,
+                           "type='signal',"
+                           "sender='org.freedesktop.systemd1',"
+                           "interface='org.freedesktop.systemd1.Manager',"
+                           "member='UnitRemoved',"
+                           "path='/org/freedesktop/systemd1'",
+                           &error);
+        if (dbus_error_is_set(&error)) {
+                log_error("Failed to add match for UnitRemoved: %s", bus_error_message(&error));
+                dbus_error_free(&error);
+        }
+
         dbus_bus_add_match(m->bus,
                            "type='signal',"
                            "sender='org.freedesktop.systemd1',"
@@ -221,6 +233,18 @@ static int manager_connect_bus(Manager *m) {
                 dbus_error_free(&error);
         }
 
+        dbus_bus_add_match(m->bus,
+                           "type='signal',"
+                           "sender='org.freedesktop.systemd1',"
+                           "interface='org.freedesktop.systemd1.Manager',"
+                           "member='Reloading',"
+                           "path='/org/freedesktop/systemd1'",
+                           &error);
+        if (dbus_error_is_set(&error)) {
+                log_error("Failed to add match for Reloading: %s", bus_error_message(&error));
+                dbus_error_free(&error);
+        }
+
         r = bus_method_call_with_reply(
                         m->bus,
                         "org.freedesktop.systemd1",