chiark / gitweb /
machined: forward scope properties array from client to systemd
[elogind.git] / src / machine / machined.c
index 3cf7f92f964d6c63cb775e4123a3f2ff600e6d98..3ce51da90d2e827f62c09ae2a5cfcc309140e4c3 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",
@@ -306,7 +330,7 @@ int manager_startup(Manager *m) {
 
         /* And start everything */
         HASHMAP_FOREACH(machine, m->machines, i)
-                machine_start(machine);
+                machine_start(machine, NULL);
 
         return 0;
 }