diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-06-09 13:00:12 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-06-09 13:00:12 +0000 |
commit | e0d13d6da4b527ee02838af6b9dd7d53615e4896 (patch) | |
tree | ef1a24ef3d6e1474c71a5de65bdb867cfc74e88c | |
parent | fd283b079f2b8ff4929e6125ad364da9b4dc3168 (diff) |
At minimum return an empty dictionary
-rw-r--r-- | hcid/device.c | 24 |
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: |