summaryrefslogtreecommitdiffstats
path: root/hcid/dbus.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@nokia.com>2006-09-27 16:25:11 +0000
committerJohan Hedberg <johan.hedberg@nokia.com>2006-09-27 16:25:11 +0000
commit255528bec9a5ffdd81ce509f2166a3a405b958d3 (patch)
tree4f0f3944f4d5f26525f8618647d3e1c453b4dc1e /hcid/dbus.c
parent247635fe3905e4cc084a167c6db6e53dd7b0554d (diff)
Return correct error reply for CreateBonding when using security mode 3
Diffstat (limited to 'hcid/dbus.c')
-rw-r--r--hcid/dbus.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/hcid/dbus.c b/hcid/dbus.c
index 06abd9d3..af9859d5 100644
--- a/hcid/dbus.c
+++ b/hcid/dbus.c
@@ -225,7 +225,7 @@ static int active_conn_remove(struct slist **list, uint16_t *handle)
return ret_val;
}
-static DBusMessage *dbus_msg_new_authentication_return(DBusMessage *msg, uint8_t status)
+DBusMessage *new_authentication_return(DBusMessage *msg, uint8_t status)
{
switch (status) {
case 0x00: /* success */
@@ -789,6 +789,9 @@ void hcid_dbus_pending_pin_req_add(bdaddr_t *sba, bdaddr_t *dba)
memset(info, 0, sizeof(struct pending_pin_info));
bacpy(&info->bdaddr, dba);
pdata->pin_reqs = slist_append(pdata->pin_reqs, info);
+
+ if (pdata->bonding && !bacmp(dba, &pdata->bonding->bdaddr))
+ pdata->bonding->auth_active = 1;
}
int hcid_dbus_request_pin(int dev, bdaddr_t *sba, struct hci_conn_info *ci)
@@ -856,7 +859,7 @@ void hcid_dbus_bonding_process_complete(bdaddr_t *local, bdaddr_t *peer, uint8_t
error_authentication_canceled(connection, pdata->bonding->rq);
} else {
/* reply authentication success or an error */
- message = dbus_msg_new_authentication_return(pdata->bonding->rq, status);
+ message = new_authentication_return(pdata->bonding->rq, status);
send_reply_and_unref(connection, message);
}
@@ -1552,6 +1555,9 @@ void hcid_dbus_conn_complete(bdaddr_t *local, uint8_t status, uint16_t handle, b
pdata->pin_reqs = slist_remove(pdata->pin_reqs, p);
free(p);
}
+
+ if (pdata->bonding)
+ pdata->bonding->hci_status = status;
} else {
/* Sent the remote device connected signal */
message = dbus_message_new_signal(path, ADAPTER_INTERFACE, "RemoteDeviceConnected");
@@ -1634,7 +1640,7 @@ void hcid_dbus_disconn_complete(bdaddr_t *local, uint8_t status, uint16_t handle
/* reply authentication canceled */
error_authentication_canceled(connection, pdata->bonding->rq);
} else {
- message = dbus_msg_new_authentication_return(pdata->bonding->rq, HCI_AUTHENTICATION_FAILURE);
+ message = new_authentication_return(pdata->bonding->rq, HCI_AUTHENTICATION_FAILURE);
send_reply_and_unref(connection, message);
}