summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/login/logind-dbus.c4
-rw-r--r--src/shared/dbus-common.c13
-rw-r--r--src/shared/dbus-common.h4
3 files changed, 17 insertions, 4 deletions
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
index 8b6021d35..89021ab15 100644
--- a/src/login/logind-dbus.c
+++ b/src/login/logind-dbus.c
@@ -2276,8 +2276,8 @@ static DBusHandlerResult manager_message_handler(
}
if (reply) {
- if (!dbus_connection_send(connection, reply, NULL))
- goto oom;
+ if (!bus_maybe_send_reply(connection, message, reply))
+ goto oom;
dbus_message_unref(reply);
}
diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c
index ee281e57f..e9a78c299 100644
--- a/src/shared/dbus-common.c
+++ b/src/shared/dbus-common.c
@@ -501,7 +501,7 @@ set_prop:
}
if (reply) {
- if (!dbus_connection_send(c, reply, NULL))
+ if (!bus_maybe_send_reply(c, message, reply))
goto oom;
return DBUS_HANDLER_RESULT_HANDLED;
@@ -713,6 +713,15 @@ const char *bus_errno_to_dbus(int error) {
return DBUS_ERROR_FAILED;
}
+dbus_bool_t bus_maybe_send_reply (DBusConnection *c,
+ DBusMessage *message,
+ DBusMessage *reply)
+{
+ if (dbus_message_get_no_reply (message))
+ return TRUE;
+ return dbus_connection_send (c, reply, NULL);
+}
+
DBusHandlerResult bus_send_error_reply(DBusConnection *c, DBusMessage *message, DBusError *berror, int error) {
_cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
const char *name, *text;
@@ -729,7 +738,7 @@ DBusHandlerResult bus_send_error_reply(DBusConnection *c, DBusMessage *message,
if (!reply)
goto oom;
- if (!dbus_connection_send(c, reply, NULL))
+ if (!bus_maybe_send_reply(c, message, reply))
goto oom;
if (berror)
diff --git a/src/shared/dbus-common.h b/src/shared/dbus-common.h
index 005a715d0..3b7ae1693 100644
--- a/src/shared/dbus-common.h
+++ b/src/shared/dbus-common.h
@@ -113,6 +113,10 @@ typedef struct BusBoundProperties {
const void *const base; /* base pointer to which the offset must be added to reach data */
} BusBoundProperties;
+dbus_bool_t bus_maybe_send_reply (DBusConnection *c,
+ DBusMessage *message,
+ DBusMessage *reply);
+
DBusHandlerResult bus_send_error_reply(
DBusConnection *c,
DBusMessage *message,