mirror of
https://github.com/systemd/systemd.git
synced 2025-03-25 18:50:18 +03:00
dbus: log result for RequestName()
This commit is contained in:
parent
03d6ab854e
commit
61902ea3eb
61
dbus.c
61
dbus.c
@ -380,10 +380,54 @@ unsigned bus_dispatch(Manager *m) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void pending_cb(DBusPendingCall *pending, void *userdata) {
|
||||
DBusMessage *reply;
|
||||
DBusError error;
|
||||
|
||||
dbus_error_init(&error);
|
||||
|
||||
assert_se(reply = dbus_pending_call_steal_reply(pending));
|
||||
|
||||
switch (dbus_message_get_type(reply)) {
|
||||
|
||||
case DBUS_MESSAGE_TYPE_ERROR:
|
||||
|
||||
assert_se(dbus_set_error_from_message(&error, reply));
|
||||
log_warning("RequestName() failed: %s", error.message);
|
||||
break;
|
||||
|
||||
case DBUS_MESSAGE_TYPE_METHOD_RETURN: {
|
||||
uint32_t r;
|
||||
|
||||
if (!dbus_message_get_args(reply,
|
||||
&error,
|
||||
DBUS_TYPE_UINT32, &r,
|
||||
DBUS_TYPE_INVALID)) {
|
||||
log_error("Failed to parse RequestName() reply: %s", error.message);
|
||||
break;
|
||||
}
|
||||
|
||||
if (r == 1)
|
||||
log_debug("Successfully acquired name.");
|
||||
else
|
||||
log_error("Name already owned.");
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
assert_not_reached("Invalid reply message");
|
||||
}
|
||||
|
||||
dbus_message_unref(reply);
|
||||
dbus_error_free(&error);
|
||||
}
|
||||
|
||||
static int request_name(Manager *m) {
|
||||
DBusMessage *message;
|
||||
const char *name = "org.freedesktop.systemd1";
|
||||
uint32_t flags = 0;
|
||||
DBusPendingCall *pending;
|
||||
|
||||
if (!(message = dbus_message_new_method_call(
|
||||
DBUS_SERVICE_DBUS,
|
||||
@ -401,17 +445,26 @@ static int request_name(Manager *m) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (!dbus_connection_send(m->bus, message, NULL)) {
|
||||
if (!dbus_connection_send_with_reply(m->bus, message, &pending, -1)) {
|
||||
dbus_message_unref(message);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* We simple ask for the name and don't wait for it. Sooner or
|
||||
* later we'll have it, and we wouldn't know what to do on
|
||||
* error anyway. */
|
||||
|
||||
dbus_message_unref(message);
|
||||
|
||||
if (!dbus_pending_call_set_notify(pending, pending_cb, NULL, NULL)) {
|
||||
dbus_pending_call_cancel(pending);
|
||||
dbus_pending_call_unref(pending);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
||||
dbus_pending_call_unref(pending);
|
||||
|
||||
/* We simple ask for the name and don't wait for it. Sooner or
|
||||
* later we'll have it. */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user