summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-06-09 13:00:12 +0000
committerMarcel Holtmann <marcel@holtmann.org>2008-06-09 13:00:12 +0000
commite0d13d6da4b527ee02838af6b9dd7d53615e4896 (patch)
treeef1a24ef3d6e1474c71a5de65bdb867cfc74e88c
parentfd283b079f2b8ff4929e6125ad364da9b4dc3168 (diff)
At minimum return an empty dictionary
-rw-r--r--hcid/device.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/hcid/device.c b/hcid/device.c
index 15bb41a1..36d0d8fd 100644
--- a/hcid/device.c
+++ b/hcid/device.c
@@ -1046,7 +1046,7 @@ static DBusMessage *disconnect(DBusConnection *conn,
static GDBusMethodTable device_methods[] = {
{ "GetProperties", "", "a{sv}", get_properties },
{ "SetProperty", "sv", "", set_property },
- { "DiscoverServices", "s", "a{sv}", discover_services,
+ { "DiscoverServices", "s", "a{us}", discover_services,
G_DBUS_METHOD_FLAG_ASYNC},
{ "CancelDiscovery", "", "", cancel_discover },
{ "Disconnect", "", "", disconnect },
@@ -1232,8 +1232,25 @@ probe:
proceed:
if (req->update == TRUE) {
- /* FIXME return handle/record dictonary */
- g_dbus_send_reply(req->conn, req->msg, DBUS_TYPE_INVALID);
+ DBusMessageIter iter, dict;
+
+ reply = dbus_message_new_method_return(req->msg);
+ if (!reply)
+ goto fail;
+
+ dbus_message_iter_init_append(reply, &iter);
+
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
+ DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
+ DBUS_TYPE_UINT32_AS_STRING DBUS_TYPE_STRING_AS_STRING
+ DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);
+
+ /* FIXME add handle/record pairs */
+
+ dbus_message_iter_close_container(&iter, &dict);
+
+ dbus_connection_send(req->conn, reply, NULL);
+ dbus_message_unref(reply);
goto fail;
}
@@ -1251,7 +1268,6 @@ proceed:
DBUS_TYPE_INVALID);
dbus_connection_send(req->conn, reply, NULL);
-
dbus_message_unref(reply);
fail: