diff options
Diffstat (limited to 'src/sbus/sssd_dbus_connection.c')
-rw-r--r-- | src/sbus/sssd_dbus_connection.c | 33 |
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; } } |