From 45a70b63e0610b51ee2039af99c4aa678fbd20bc Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Fri, 18 Jul 2014 15:04:14 +0300 Subject: [PATCH] core: Add convenience API to check for available default agent --- src/adapter.c | 11 ++--------- src/agent.c | 5 +++++ src/agent.h | 1 + 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index db8a73762..f286bbda8 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -7028,20 +7028,13 @@ static void read_info_complete(uint8_t status, uint16_t length, 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) + if (!agent_default_available()) set_mode(adapter, MGMT_OP_SET_PAIRABLE, 0x00); } else { - if (agent) + if (agent_default_available()) 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 70786c3b0..af96528b5 100644 --- a/src/agent.c +++ b/src/agent.c @@ -261,6 +261,11 @@ void agent_unref(struct agent *agent) 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 1e4692036..de6db2c41 100644 --- a/src/agent.h +++ b/src/agent.h @@ -36,6 +36,7 @@ typedef void (*agent_passkey_cb) (struct agent *agent, DBusError *err, 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, -- 2.47.3