- if (!dbus_message_append_args(m,
- DBUS_TYPE_STRING, &name,
- DBUS_TYPE_STRING, &mode,
- DBUS_TYPE_INVALID)) {
- log_error("Could not append arguments to message.");
- r = -ENOMEM;
- goto finish;
- }
+ if (!dbus_message_append_args(m,
+ DBUS_TYPE_STRING, i,
+ DBUS_TYPE_STRING, &mode,
+ DBUS_TYPE_INVALID)) {
+ log_error("Could not append arguments to message.");
+ r = -ENOMEM;
+ goto finish;
+ }
+
+ if (reply)
+ dbus_message_unref(reply);
+ reply = dbus_connection_send_with_reply_and_block(bus, m, -1, error);
+ if (!reply) {
+ if (streq(error->name, "org.freedesktop.DBus.Error.FileNotFound") ||
+ streq(error->name, "org.freedesktop.systemd1.LoadFailed") ||
+ streq(error->name, "org.freedesktop.systemd1.NoSuchUnit")) {
+ /* This implementation does not exist, try next one */
+ dbus_error_free(error);
+ continue;
+ }
+
+ log_error("Failed to issue method call: %s", bus_error_message(error));
+ r = -EIO;
+ goto finish;
+ }