summaryrefslogtreecommitdiffstats
path: root/hcid/dbus-security.c
diff options
context:
space:
mode:
Diffstat (limited to 'hcid/dbus-security.c')
-rw-r--r--hcid/dbus-security.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/hcid/dbus-security.c b/hcid/dbus-security.c
index 146c1190..8f587001 100644
--- a/hcid/dbus-security.c
+++ b/hcid/dbus-security.c
@@ -44,6 +44,7 @@
#include <gdbus.h>
#include "adapter.h"
+#include "manager.h"
#include "hcid.h"
#include "dbus-common.h"
#include "dbus-service.h"
@@ -110,10 +111,14 @@ static void passkey_agent_free(struct passkey_agent *agent)
for (l = agent->pending_requests; l != NULL; l = l->next) {
struct pending_agent_request *req = l->data;
+ struct adapter *adapter = manager_find_adapter(&req->sba);
hci_send_cmd(req->dev, OGF_LINK_CTL,
OCF_PIN_CODE_NEG_REPLY, 6, &req->bda);
+ if (adapter)
+ adapter_auth_request_replied(adapter, &req->bda);
+
send_cancel_request(req);
}
@@ -643,6 +648,7 @@ static void passkey_agent_reply(DBusPendingCall *call, void *user_data)
{
struct pending_agent_request *req = user_data;
struct passkey_agent *agent = req->agent;
+ struct adapter *adapter = manager_find_adapter(&req->sba);
pin_code_reply_cp pr;
DBusMessage *message;
DBusError err;
@@ -712,6 +718,9 @@ fail:
OCF_PIN_CODE_NEG_REPLY, 6, &req->bda);
done:
+ if (adapter)
+ adapter_auth_request_replied(adapter, &req->bda);
+
if (message)
dbus_message_unref(message);
@@ -735,6 +744,7 @@ static int call_passkey_agent(DBusConnection *conn,
bdaddr_t *dba)
{
struct pending_agent_request *req;
+ struct adapter *adapter = manager_find_adapter(sba);
if (!agent) {
debug("call_passkey_agent(): no agent available");
@@ -768,6 +778,9 @@ failed:
send:
hci_send_cmd(dev, OGF_LINK_CTL, OCF_PIN_CODE_NEG_REPLY, 6, dba);
+ if (adapter)
+ adapter_auth_request_replied(adapter, &req->bda);
+
return -1;
}