summaryrefslogtreecommitdiffstats
path: root/src/sbus/sssd_dbus_connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sbus/sssd_dbus_connection.c')
-rw-r--r--src/sbus/sssd_dbus_connection.c33
1 files changed, 9 insertions, 24 deletions
diff --git a/src/sbus/sssd_dbus_connection.c b/src/sbus/sssd_dbus_connection.c
index 0049cf3c6..ab18049f8 100644
--- a/src/sbus/sssd_dbus_connection.c
+++ b/src/sbus/sssd_dbus_connection.c
@@ -345,18 +345,6 @@ void sbus_disconnect (struct sbus_connection *conn)
DEBUG(SSSDBG_TRACE_FUNC ,"Disconnected %p\n", conn->dbus.conn);
}
-static int sbus_reply_internal_error(DBusMessage *message,
- struct sbus_connection *conn) {
- DBusMessage *reply = dbus_message_new_error(message, DBUS_ERROR_IO_ERROR,
- "Internal Error");
- if (reply) {
- sbus_conn_send_reply(conn, reply);
- dbus_message_unref(reply);
- return DBUS_HANDLER_RESULT_HANDLED;
- }
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
/* Looks up a vtable func, in a struct derived from struct sbus_vtable */
#define VTABLE_FUNC(vtable, offset) \
(*((void **)((char *)(vtable) + (offset))))
@@ -380,7 +368,6 @@ DBusHandlerResult sbus_message_handler(DBusConnection *dbus_conn,
void *handler_data = NULL; /* Must be a talloc pointer! */
struct sbus_introspect_ctx *ictx = NULL;
DBusHandlerResult result;
- int ret;
if (!user_data) {
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
@@ -435,7 +422,11 @@ DBusHandlerResult sbus_message_handler(DBusConnection *dbus_conn,
DEBUG(SSSDBG_TRACE_LIBS, "Got introspection request\n");
ictx = talloc(intf_p->conn, struct sbus_introspect_ctx);
if (ictx == NULL) {
- result = sbus_reply_internal_error(message, intf_p->conn);
+ reply = dbus_message_new_error(message,
+ DBUS_ERROR_NO_MEMORY, NULL);
+ sbus_conn_send_reply(intf_p->conn, reply);
+ dbus_message_unref(reply);
+ result = DBUS_HANDLER_RESULT_HANDLED;
} else {
handler_fn = sbus_introspect;
ictx->iface = interface;
@@ -447,10 +438,7 @@ DBusHandlerResult sbus_message_handler(DBusConnection *dbus_conn,
if (handler_fn) {
dbus_req = sbus_new_request(intf_p->conn, intf_p->intf, message);
- if (!dbus_req) {
- talloc_zfree(handler_data);
- ret = ENOMEM;
- } else {
+ if (dbus_req) {
dbus_req->method = method;
if (handler_data) {
/* If the handler uses private instance data, make
@@ -463,12 +451,9 @@ DBusHandlerResult sbus_message_handler(DBusConnection *dbus_conn,
*/
handler_data = intf_p->intf->instance_data;
}
- ret = handler_fn(dbus_req, handler_data);
- }
- if (ret != EOK) {
- talloc_free(dbus_req);
- result = sbus_reply_internal_error(message, intf_p->conn);
- } else {
+
+ sbus_request_invoke_or_finish(dbus_req, handler_fn, handler_data,
+ method->invoker);
result = DBUS_HANDLER_RESULT_HANDLED;
}
}