summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/adapter.c19
-rw-r--r--src/adapter.h1
-rw-r--r--src/dbus-hci.c20
3 files changed, 22 insertions, 18 deletions
diff --git a/src/adapter.c b/src/adapter.c
index 53a06101..701f49a1 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2863,6 +2863,25 @@ int adapter_remove_found_device(struct adapter *adapter, bdaddr_t *bdaddr)
return 0;
}
+void adapter_update_oor_devices(struct adapter *adapter)
+{
+ GSList *l = adapter->found_devices;
+ struct remote_dev_info *dev;
+ bdaddr_t tmp;
+
+ g_slist_foreach(adapter->oor_devices, (GFunc) free, NULL);
+ g_slist_free(adapter->oor_devices);
+ adapter->oor_devices = NULL;
+
+ while (l) {
+ dev = l->data;
+ baswap(&tmp, &dev->bdaddr);
+ adapter->oor_devices = g_slist_append(adapter->oor_devices,
+ batostr(&tmp));
+ l = l->next;
+ }
+}
+
int btd_register_adapter_driver(struct btd_adapter_driver *driver)
{
adapter_drivers = g_slist_append(adapter_drivers, driver);
diff --git a/src/adapter.h b/src/adapter.h
index dfc377ed..8b42dbad 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -177,6 +177,7 @@ struct remote_dev_info *adapter_search_found_devices(struct adapter *adapter,
int adapter_add_found_device(struct adapter *adapter, bdaddr_t *bdaddr,
int8_t rssi, name_status_t name_status);
int adapter_remove_found_device(struct adapter *adapter, bdaddr_t *bdaddr);
+void adapter_update_oor_devices(struct adapter *adapter);
struct btd_adapter_driver {
const char *name;
diff --git a/src/dbus-hci.c b/src/dbus-hci.c
index 465a1072..63978d84 100644
--- a/src/dbus-hci.c
+++ b/src/dbus-hci.c
@@ -802,8 +802,7 @@ static int found_device_req_name(struct adapter *adapter)
/* if failed, request the next element */
/* remove the element from the list */
- adapter->found_devices = g_slist_remove(adapter->found_devices, dev);
- g_free(dev);
+ adapter_remove_found_device(adapter, &dev->bdaddr);
/* get the next element */
dev = adapter_search_found_devices(adapter, &match);
@@ -834,8 +833,6 @@ static void send_out_of_range(const char *path, GSList *l)
void hcid_dbus_inquiry_complete(bdaddr_t *local)
{
struct adapter *adapter;
- struct remote_dev_info *dev;
- bdaddr_t tmp;
const gchar *path;
int state;
@@ -850,22 +847,9 @@ void hcid_dbus_inquiry_complete(bdaddr_t *local)
/* Out of range verification */
if ((adapter_get_state(adapter) & PERIODIC_INQUIRY) &&
!(adapter_get_state(adapter) & STD_INQUIRY)) {
- GSList *l;
send_out_of_range(path, adapter->oor_devices);
-
- g_slist_foreach(adapter->oor_devices, (GFunc) free, NULL);
- g_slist_free(adapter->oor_devices);
- adapter->oor_devices = NULL;
-
- l = adapter->found_devices;
- while (l) {
- dev = l->data;
- baswap(&tmp, &dev->bdaddr);
- adapter->oor_devices = g_slist_append(adapter->oor_devices,
- batostr(&tmp));
- l = l->next;
- }
+ adapter_update_oor_devices(adapter);
}
/*