diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2006-08-18 23:32:01 +0000 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2006-08-18 23:32:01 +0000 |
commit | 37726232053804e18cb5c34e6dec42a8427240a2 (patch) | |
tree | 1e27151d3cb420b2546a76710a77c2adcd3e6a77 /hcid | |
parent | 9f3d6b792cda3e1473112331c4aeb116906fc5a1 (diff) |
Cancel agent requests on DEVDOWN
Diffstat (limited to 'hcid')
-rw-r--r-- | hcid/dbus-security.c | 4 | ||||
-rw-r--r-- | hcid/dbus.c | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/hcid/dbus-security.c b/hcid/dbus-security.c index d2d634e6..f7b409e6 100644 --- a/hcid/dbus-security.c +++ b/hcid/dbus-security.c @@ -569,7 +569,7 @@ void cancel_passkey_agent_requests(struct slist *agents, const char *path, bdadd for (l = default_agent->pending_requests; l != NULL; l = next) { struct pending_agent_request *req = l->data; next = l->next; - if (!strcmp(path, req->path) && !bacmp(addr, &req->bda)) { + if (!strcmp(path, req->path) && (!addr || !bacmp(addr, &req->bda))) { send_cancel_request(default_agent, req); default_agent->pending_requests = slist_remove(default_agent->pending_requests, req); @@ -582,7 +582,7 @@ void cancel_passkey_agent_requests(struct slist *agents, const char *path, bdadd for (l = agent->pending_requests; l != NULL; l = next) { struct pending_agent_request *req = l->data; next = l->next; - if (!strcmp(path, req->path) && !bacmp(addr, &req->bda)) { + if (!strcmp(path, req->path) && (!addr || !bacmp(addr, &req->bda))) { send_cancel_request(agent, req); agent->pending_requests = slist_remove(agent->pending_requests, req); } diff --git a/hcid/dbus.c b/hcid/dbus.c index 696211d5..6e174ab3 100644 --- a/hcid/dbus.c +++ b/hcid/dbus.c @@ -635,6 +635,8 @@ int hcid_dbus_stop_device(uint16_t id) /* check pending requests */ reply_pending_requests(path, pdata); + cancel_passkey_agent_requests(pdata->passkey_agents, path, NULL); + if (pdata->requestor_name) { free(pdata->requestor_name); pdata->requestor_name = NULL; |