diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/adapter.c | 9 | ||||
-rw-r--r-- | src/agent.c | 4 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/adapter.c b/src/adapter.c index b9bd74ab..865449c5 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -436,11 +436,20 @@ static struct bonding_request_info *bonding_request_new(DBusConnection *conn, device_get_address(device, &bdaddr); ba2str(&bdaddr, addr); + if (adapter->agent && + agent_matches(adapter->agent, name, agent_path)) { + error("Refusing adapter agent usage as device specific one"); + return NULL; + } + agent = agent_create(adapter, name, agent_path, capability, device_agent_removed, device); + if (!agent) + debug("agent_create failed"); + device_set_agent(device, agent); debug("Temporary agent registered for hci%d/%s at %s:%s", diff --git a/src/agent.c b/src/agent.c index 8ae43c4a..46202ac0 100644 --- a/src/agent.c +++ b/src/agent.c @@ -188,10 +188,6 @@ struct agent *agent_create(struct btd_adapter *adapter, const char *name, { struct agent *agent, *adapter_agent; - adapter_agent = adapter_get_agent(adapter); - if (adapter_agent && g_str_equal(adapter_agent->name, name)) - return NULL; - agent = g_new0(struct agent, 1); agent->adapter = adapter; |