diff --git a/src/adapter.c b/src/adapter.c
index 54e7496..21c1bb6 100644
--- a/src/adapter.c
+++ b/src/adapter.c
dbus_error_free(&derr);
- if (auth->agent != NULL)
+ if (auth->agent != NULL) {
+ agent_cancel(auth->agent);
agent_unref(auth->agent);
+ }
g_free(auth);
}
g_queue_remove(auth->adapter->auths, auth);
- if (auth->agent)
+ if (auth->agent) {
+ agent_cancel(auth->agent);
agent_unref(auth->agent);
+ }
g_free(auth);
diff --git a/src/agent.c b/src/agent.c
index 9ab1c8b..97daf71 100644
--- a/src/agent.c
+++ b/src/agent.c
if (dbus_error_has_name(&err, DBUS_ERROR_NO_REPLY)) {
error("Timed out waiting for reply from agent");
+ agent_cancel(agent);
dbus_message_unref(message);
dbus_error_free(&err);
agent_unref(agent);
diff --git a/src/device.c b/src/device.c
index 875a5c5..db6c4f8 100644
--- a/src/device.c
+++ b/src/device.c
g_free(bonding->cb_iter);
if (bonding->agent) {
+ agent_cancel(bonding->agent);
agent_unref(bonding->agent);
bonding->agent = NULL;
}