From d4891c5958e1166920d4af76d8e72b34a387a959 Mon Sep 17 00:00:00 2001 From: Vinicius Costa Gomes Date: Tue, 31 Jan 2012 14:10:52 -0300 Subject: [PATCH] device: Fix not using the "bonded" property for new bondings When checking if a device was already bonded, we should use the paired property instead of reading the link key from storage. This method will work for LE links, also. --- src/device.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/device.c b/src/device.c index 88cd4cc01..0133e07ba 100644 --- a/src/device.c +++ b/src/device.c @@ -2287,29 +2287,15 @@ DBusMessage *device_create_bonding(struct btd_device *device, const char *agent_path, uint8_t capability) { - char filename[PATH_MAX + 1]; - char *str, srcaddr[18], dstaddr[18]; struct btd_adapter *adapter = device->adapter; struct bonding_req *bonding; - bdaddr_t src; int err; - adapter_get_address(adapter, &src); - ba2str(&src, srcaddr); - ba2str(&device->bdaddr, dstaddr); - if (device->bonding) return btd_error_in_progress(msg); - /* check if a link key already exists */ - create_name(filename, PATH_MAX, STORAGEDIR, srcaddr, - "linkkeys"); - - str = textfile_caseget(filename, dstaddr); - if (str) { - free(str); + if (device_is_bonded(device)) return btd_error_already_exists(msg); - } err = adapter_create_bonding(adapter, &device->bdaddr, capability); if (err < 0) -- 2.47.3