diff options
author | Vinicius Gomes <vinicius.gomes@openbossa.org> | 2008-04-14 21:10:27 +0000 |
---|---|---|
committer | Vinicius Gomes <vinicius.gomes@openbossa.org> | 2008-04-14 21:10:27 +0000 |
commit | fb306e968c0fc7a621df09c2c544db895d0b3419 (patch) | |
tree | 576f271ed9ac0e3661987d2b7147ba218a3a8659 /hcid/adapter.c | |
parent | cddee8f1044440a24f2c2ea98ebf529dc3db7de0 (diff) |
hcid: removing device object when some error occurs during bonding process
Diffstat (limited to 'hcid/adapter.c')
-rw-r--r-- | hcid/adapter.c | 14 |
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, |