diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-12-03 14:58:09 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-12-03 14:58:09 +0200 |
commit | fbb20362e9dcaf11c03e5bf15c41c70aba269619 (patch) | |
tree | d5feaacf265fc3f10b44cf06c2f38478cca3ea0d | |
parent | 75feaf48401c04fb68e78c41213e26fdefa71ab9 (diff) |
Fix agent creation checks
Allow the same process (D-Bus name) to own both the default (adapter
specific) as well as a device specific agent.
-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; |