diff options
-rw-r--r-- | src/adapter.c | 45 | ||||
-rw-r--r-- | src/adapter.h | 1 | ||||
-rw-r--r-- | src/dbus-hci.c | 49 | ||||
-rw-r--r-- | src/dbus-hci.h | 2 |
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); |