diff options
| author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-04-11 19:34:17 +0000 | 
|---|---|---|
| committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-04-11 19:34:17 +0000 | 
| commit | 7ac7ec4e9be4a28d906fa152bfdd1e7e7ceed6f6 (patch) | |
| tree | 2f09918ac71043ba0e4b3c1434bd631e5b3b44c3 /hcid/plugin.c | |
| parent | 25f696a6bb2682902ba8d34cea190ef0ebf45aa4 (diff) | |
Plugin auth cancel: call device's agent when it is available
Diffstat (limited to 'hcid/plugin.c')
| -rw-r--r-- | hcid/plugin.c | 21 | 
1 files changed, 19 insertions, 2 deletions
| diff --git a/hcid/plugin.c b/hcid/plugin.c index 29f11714..ca43ae72 100644 --- a/hcid/plugin.c +++ b/hcid/plugin.c @@ -240,9 +240,26 @@ int plugin_req_auth(bdaddr_t *src, bdaddr_t *dst,  int plugin_cancel_auth(bdaddr_t *src)  {  	struct adapter *adapter = ba2adapter(src); +	struct device *device; +	struct agent *agent; +	char address[18]; + +	if (!adapter) +		return -EPERM; -	if (!adapter || !adapter->agent) +	ba2str(src, address); +	device = adapter_find_device(adapter, address); +	if (!device) +		return -EPERM; + +	/* +	 * FIXME: Cancel fails if authorization is requested to adapter's +	 * agent and in the meanwhile CreatePairedDevice is called. +	 */ + +	agent = (device->agent ? : adapter->agent); +	if (!agent)  		return -EPERM; -	return agent_cancel(adapter->agent); +	return agent_cancel(agent);  } | 
