Fix connection info duplication issue 33/223233/1
authorWootak Jung <wootak.jung@samsung.com>
Tue, 28 Jan 2020 00:47:15 +0000 (09:47 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Tue, 28 Jan 2020 00:47:15 +0000 (09:47 +0900)
connection_info should be added if no stored.

Change-Id: Ibec03e55ad8126005a24707e9d2925e04af41fbd

bt-oal/bluez_hal/src/bt-hal-gatt-client.c

index eaebfd6..56aa2d4 100644 (file)
@@ -306,14 +306,18 @@ bt_status_t btif_gattc_add_connection_info(const bt_bdaddr_t *bd_addr, int conn_
        client_info->conn_id = conn_id;
        client_info->inst_id = server_inst_id;
        hal_gattc_client_info_list = g_slist_append(hal_gattc_client_info_list, client_info);
+       DBG("Added client connection info in list");
 
        /* Add server connection info in list */
-       server_info = g_malloc0(sizeof(hal_gattc_server_info_t));
-       memcpy(server_info->bd_addr.address, bd_addr->address, BT_HAL_ADDRESS_LENGTH_MAX);
-       server_info->inst_id = server_inst_id;
-       hal_gattc_server_info_list = g_slist_append(hal_gattc_server_info_list, server_info);
+       server_info = __bt_find_gatt_conn_info(bd_addr);
+       if (server_info == NULL) {
+               server_info = g_malloc0(sizeof(hal_gattc_server_info_t));
+               memcpy(server_info->bd_addr.address, bd_addr->address, BT_HAL_ADDRESS_LENGTH_MAX);
+               server_info->inst_id = server_inst_id;
+               hal_gattc_server_info_list = g_slist_append(hal_gattc_server_info_list, server_info);
+               DBG("Added server connection info in list");
+       }
 
-       DBG("Added client/server connection info in list");
        return BT_STATUS_SUCCESS;
 }