summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/adapter.c45
-rw-r--r--src/adapter.h1
-rw-r--r--src/dbus-hci.c49
-rw-r--r--src/dbus-hci.h2
4 files changed, 48 insertions, 49 deletions
diff --git a/src/adapter.c b/src/adapter.c
index db310d19..e21a5452 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -168,6 +168,37 @@ static DBusHandlerResult error_connection_attempt_failed(DBusConnection *conn,
err > 0 ? strerror(err) : "Connection attempt failed");
}
+static void bonding_request_free(struct bonding_request_info *bonding)
+{
+ struct btd_device *device;
+ char address[18];
+ struct agent *agent;
+
+ if (!bonding)
+ return;
+
+ if (bonding->msg)
+ dbus_message_unref(bonding->msg);
+
+ if (bonding->conn)
+ dbus_connection_unref(bonding->conn);
+
+ if (bonding->io)
+ g_io_channel_unref(bonding->io);
+
+ ba2str(&bonding->bdaddr, address);
+
+ device = adapter_find_device(bonding->adapter, address);
+ agent = device_get_agent(device);
+
+ if (device && agent) {
+ agent_destroy(agent, FALSE);
+ device_set_agent(device, NULL);
+ }
+
+ g_free(bonding);
+}
+
static int active_conn_find_by_bdaddr(const void *data, const void *user_data)
{
const struct active_conn_info *con = data;
@@ -2979,6 +3010,20 @@ struct active_conn_info *adapter_search_active_conn_by_handle(struct adapter *ad
return NULL;
}
+void adapter_free_bonding_request(struct adapter *adapter)
+{
+ g_dbus_remove_watch(connection, adapter->bonding->listener_id);
+
+ if (adapter->bonding->io_id)
+ g_source_remove(adapter->bonding->io_id);
+
+ g_io_channel_close(adapter->bonding->io);
+
+ bonding_request_free(adapter->bonding);
+
+ adapter->bonding = NULL;
+}
+
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 50e2d07d..3644a36a 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -183,6 +183,7 @@ struct active_conn_info *adapter_search_active_conn_by_bdaddr(struct adapter *ad
bdaddr_t *bda);
struct active_conn_info *adapter_search_active_conn_by_handle(struct adapter *adapter,
uint16_t handle);
+void adapter_free_bonding_request(struct adapter *adapter);
struct btd_adapter_driver {
const char *name;
diff --git a/src/dbus-hci.c b/src/dbus-hci.c
index 95bbc38c..703b2f41 100644
--- a/src/dbus-hci.c
+++ b/src/dbus-hci.c
@@ -60,37 +60,6 @@
static DBusConnection *connection = NULL;
-void bonding_request_free(struct bonding_request_info *bonding)
-{
- struct btd_device *device;
- char address[18];
- struct agent *agent;
-
- if (!bonding)
- return;
-
- if (bonding->msg)
- dbus_message_unref(bonding->msg);
-
- if (bonding->conn)
- dbus_connection_unref(bonding->conn);
-
- if (bonding->io)
- g_io_channel_unref(bonding->io);
-
- ba2str(&bonding->bdaddr, address);
-
- device = adapter_find_device(bonding->adapter, address);
- agent = device_get_agent(device);
-
- if (device && agent) {
- agent_destroy(agent, FALSE);
- device_set_agent(device, NULL);
- }
-
- g_free(bonding);
-}
-
DBusMessage *new_authentication_return(DBusMessage *msg, uint8_t status)
{
switch (status) {
@@ -621,13 +590,7 @@ proceed:
}
cleanup:
- g_dbus_remove_watch(connection, adapter->bonding->listener_id);
-
- if (adapter->bonding->io_id)
- g_source_remove(adapter->bonding->io_id);
- g_io_channel_close(adapter->bonding->io);
- bonding_request_free(adapter->bonding);
- adapter->bonding = NULL;
+ adapter_free_bonding_request(adapter);
}
void hcid_dbus_inquiry_start(bdaddr_t *local)
@@ -1156,15 +1119,7 @@ void hcid_dbus_disconn_complete(bdaddr_t *local, uint8_t status,
dbus_connection_send(connection, reply, NULL);
dbus_message_unref(reply);
}
-
- g_dbus_remove_watch(adapter->bonding->conn,
- adapter->bonding->listener_id);
-
- if (adapter->bonding->io_id)
- g_source_remove(adapter->bonding->io_id);
- g_io_channel_close(adapter->bonding->io);
- bonding_request_free(adapter->bonding);
- adapter->bonding = NULL;
+ adapter_free_bonding_request(adapter);
}
adapter_remove_active_conn(adapter, dev);
diff --git a/src/dbus-hci.h b/src/dbus-hci.h
index f13ef740..2d78edc3 100644
--- a/src/dbus-hci.h
+++ b/src/dbus-hci.h
@@ -53,8 +53,6 @@ DBusMessage *new_authentication_return(DBusMessage *msg, uint8_t status);
int cancel_discovery(struct adapter *adapter);
int cancel_periodic_discovery(struct adapter *adapter);
-void bonding_request_free(struct bonding_request_info *dev);
-
int set_limited_discoverable(int dd, const uint8_t *cls, gboolean limited);
int set_service_classes(int dd, const uint8_t *cls, uint8_t value);