systemctl: fix issue with systemctl daemon-reexec

This commit is contained in:
Simon Peeters 2012-08-10 17:32:19 +02:00 committed by Lennart Poettering
parent fd5b4ca11e
commit c516c8d17f
2 changed files with 10 additions and 4 deletions

View File

@ -1287,7 +1287,8 @@ int bus_method_call_with_reply(DBusConnection *bus,
reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error);
dbus_message_unref(m);
if (!reply) {
log_error("Failed to issue method call: %s", bus_error_message(&error));
if (!return_error)
log_error("Failed to issue method call: %s", bus_error_message(&error));
if (bus_error_is_no_service(&error))
r = -ENOENT;
else if (dbus_error_has_name(&error, DBUS_ERROR_ACCESS_DENIED))

View File

@ -1537,11 +1537,12 @@ static int start_unit_one(
DBUS_TYPE_INVALID);
free(n);
if (r) {
if (r == -ENOENT && arg_action != ACTION_SYSTEMCTL ) {
if (r == -ENOENT && arg_action != ACTION_SYSTEMCTL )
/* There's always a fallback possible for
* legacy actions. */
r = -EADDRNOTAVAIL;
}
else
log_error("Failed to issue method call: %s", bus_error_message(error));
goto finish;
}
@ -3143,6 +3144,7 @@ finish:
static int daemon_reload(DBusConnection *bus, char **args) {
int r;
const char *method;
DBusError error;
if (arg_action == ACTION_RELOAD)
method = "Reload";
@ -3171,7 +3173,7 @@ static int daemon_reload(DBusConnection *bus, char **args) {
"org.freedesktop.systemd1.Manager",
method,
NULL,
NULL,
&error,
DBUS_TYPE_INVALID);
if (r == -ENOENT && arg_action != ACTION_SYSTEMCTL)
@ -3182,6 +3184,9 @@ static int daemon_reload(DBusConnection *bus, char **args) {
/* On reexecution, we expect a disconnect, not
* a reply */
r = 0;
else if (r)
log_error("Failed to issue method call: %s", bus_error_message(&error));
dbus_error_free(&error);
return r;
}