summaryrefslogtreecommitdiffstats
path: root/glib/dbus-gobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'glib/dbus-gobject.c')
-rw-r--r--glib/dbus-gobject.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/glib/dbus-gobject.c b/glib/dbus-gobject.c
index e2645f41..311f6b54 100644
--- a/glib/dbus-gobject.c
+++ b/glib/dbus-gobject.c
@@ -772,7 +772,8 @@ invoke_object_method (GObject *object,
guint n_params;
const GType *types;
DBusGValueMarshalCtx context;
-
+ GError *error = NULL;
+
context.gconnection = DBUS_G_CONNECTION_FROM_CONNECTION (connection);
context.proxy = NULL;
@@ -780,12 +781,16 @@ invoke_object_method (GObject *object,
n_params = types_array->len;
types = (const GType*) types_array->data;
- value_array = dbus_gvalue_demarshal_message (&context, message, n_params, types, NULL);
+ value_array = dbus_gvalue_demarshal_message (&context, message, n_params, types, &error);
if (value_array == NULL)
{
g_free (in_signature);
g_array_free (types_array, TRUE);
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ reply = dbus_message_new_error (message, "org.freedesktop.DBus.GLib.ErrorError", error->message);
+ dbus_connection_send (connection, reply, NULL);
+ dbus_message_unref (reply);
+ g_error_free (error);
+ return DBUS_HANDLER_RESULT_HANDLED;
}
g_array_free (types_array, TRUE);
}