From: Gustavo Padovan <[email protected]>

During the connman_device_register() procedure a lookup to the
bluetooth_devices hash table happens, however the device is not on the
hash at this point and the look out fails.

This patch moves the insertion of the device to before the device
registration. This is a regression that was added by the recently added
dundee plugin.
---
 plugins/bluetooth.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c
index b06460a..2ab29a6 100644
--- a/plugins/bluetooth.c
+++ b/plugins/bluetooth.c
@@ -660,6 +660,8 @@ static void adapter_properties_reply(DBusPendingCall *call, 
void *user_data)
        if (device != NULL)
                goto update;
 
+       g_hash_table_insert(bluetooth_devices, g_strdup(path), device);
+
        ether_aton_r(address, &addr);
 
        snprintf(ident, 13, "%02x%02x%02x%02x%02x%02x",
@@ -680,11 +682,10 @@ static void adapter_properties_reply(DBusPendingCall 
*call, void *user_data)
 
        if (connman_device_register(device) < 0) {
                connman_device_unref(device);
+               g_hash_table_remove(bluetooth_devices, path);
                goto done;
        }
 
-       g_hash_table_insert(bluetooth_devices, g_strdup(path), device);
-
 update:
        connman_device_set_string(device, "Address", address);
        connman_device_set_string(device, "Name", name);
-- 
1.7.11.2

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to