summaryrefslogtreecommitdiffstats
path: root/hcid/adapter.c
diff options
context:
space:
mode:
authorVinicius Gomes <vinicius.gomes@openbossa.org>2008-04-14 21:10:27 +0000
committerVinicius Gomes <vinicius.gomes@openbossa.org>2008-04-14 21:10:27 +0000
commitfb306e968c0fc7a621df09c2c544db895d0b3419 (patch)
tree576f271ed9ac0e3661987d2b7147ba218a3a8659 /hcid/adapter.c
parentcddee8f1044440a24f2c2ea98ebf529dc3db7de0 (diff)
hcid: removing device object when some error occurs during bonding process
Diffstat (limited to 'hcid/adapter.c')
-rw-r--r--hcid/adapter.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/hcid/adapter.c b/hcid/adapter.c
index cd75e6c9..47dbed1d 100644
--- a/hcid/adapter.c
+++ b/hcid/adapter.c
@@ -2442,6 +2442,19 @@ struct device *adapter_get_device(DBusConnection *conn,
return adapter_create_device(conn, adapter, address);
}
+void remove_pending_device(struct adapter *adapter)
+{
+ struct device *device;
+ char address[18];
+
+ ba2str(&adapter->bonding->bdaddr, address);
+ device = adapter_find_device(adapter, address);
+ if (!device)
+ return;
+
+ adapter_remove_device(adapter->bonding->conn, adapter, device);
+}
+
static gboolean create_bonding_conn_complete(GIOChannel *io, GIOCondition cond,
struct adapter *adapter)
{
@@ -2561,6 +2574,7 @@ static gboolean create_bonding_conn_complete(GIOChannel *io, GIOCondition cond,
failed:
g_io_channel_close(io);
+ remove_pending_device(adapter);
cleanup:
name_listener_remove(adapter->bonding->conn,