diff --git a/src/adapter.c b/src/adapter.c
index f286bbd..db8a737 100644
--- a/src/adapter.c
+++ b/src/adapter.c
if (!(adapter->current_settings & MGMT_SETTING_PAIRABLE))
set_mode(adapter, MGMT_OP_SET_PAIRABLE, 0x01);
} else {
+ struct agent *agent = agent_get(NULL);
+
if (adapter->current_settings & MGMT_SETTING_PAIRABLE) {
- if (!agent_default_available())
+ if (!agent)
set_mode(adapter, MGMT_OP_SET_PAIRABLE, 0x00);
} else {
- if (agent_default_available())
+ if (agent)
set_mode(adapter, MGMT_OP_SET_PAIRABLE, 0x01);
}
+
+ if (agent) {
+ agent_unref(agent);
+ agent = NULL;
+ }
}
if (!kernel_conn_control)
diff --git a/src/agent.c b/src/agent.c
index af96528..70786c3 100644
--- a/src/agent.c
+++ b/src/agent.c
g_free(agent);
}
-bool agent_default_available(void)
-{
- return !queue_isempty(default_agents);
-}
-
struct agent *agent_get(const char *owner)
{
struct agent *agent;
diff --git a/src/agent.h b/src/agent.h
index de6db2c..1e46920 100644
--- a/src/agent.h
+++ b/src/agent.h
struct agent *agent_ref(struct agent *agent);
void agent_unref(struct agent *agent);
-bool agent_default_available(void);
struct agent *agent_get(const char *owner);
int agent_authorize_service(struct agent *agent, const char *path,