summaryrefslogtreecommitdiffstats
path: root/src/security.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@nokia.com>2009-02-04 14:06:42 -0800
committerJohan Hedberg <johan.hedberg@nokia.com>2009-02-04 14:06:42 -0800
commit134fbe4c0410416e779667748eab0f89c04243ec (patch)
tree7e54196b0743e5ef00d2dd7ca870f8d48d290e7a /src/security.c
parent6eb9d732835c1ea393692fb9e9318b7198829da8 (diff)
Move link key writing from security.c to dbus-hci.c
This refactoring is preparation for more fine-grained link key writing control with e.g. SSP "no bonding" use cases.
Diffstat (limited to 'src/security.c')
-rw-r--r--src/security.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/security.c b/src/security.c
index 6a7a8a2c..f2c24d2b 100644
--- a/src/security.c
+++ b/src/security.c
@@ -361,14 +361,18 @@ static void link_key_notify(int dev, bdaddr_t *sba, void *ptr)
dev_id = hci_devid(sa);
- err = write_link_key(sba, dba, evt->link_key, new_key_type,
- io_data[dev_id].pin_length);
+ err = hcid_dbus_link_key_notify(sba, dba, evt->link_key, evt->key_type,
+ io_data[dev_id].pin_length,
+ old_key_type);
if (err < 0) {
uint16_t handle;
- error("write_link_key: %s (%d)", strerror(-err), -err);
-
- hcid_dbus_bonding_process_complete(sba, dba, HCI_MEMORY_FULL);
+ if (err == -ENODEV)
+ hcid_dbus_bonding_process_complete(sba, dba,
+ HCI_OE_LOW_RESOURCES);
+ else
+ hcid_dbus_bonding_process_complete(sba, dba,
+ HCI_MEMORY_FULL);
if (get_handle(dev, sba, dba, &handle) == 0) {
disconnect_cp cp;
@@ -380,9 +384,7 @@ static void link_key_notify(int dev, bdaddr_t *sba, void *ptr)
hci_send_cmd(dev, OGF_LINK_CTL, OCF_DISCONNECT,
DISCONNECT_CP_SIZE, &cp);
}
- } else
- hcid_dbus_link_key_notify(sba, dba, evt->key_type,
- old_key_type);
+ }
io_data[dev_id].pin_length = -1;
}