diff options
| -rw-r--r-- | hcid/dbus-hci.c | 33 | ||||
| -rw-r--r-- | hcid/dbus-hci.h | 1 | ||||
| -rw-r--r-- | hcid/security.c | 10 | 
3 files changed, 23 insertions, 21 deletions
| diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index 451de7ca..c9880445 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -841,17 +841,11 @@ int auth_req_cmp(const void *p1, const void *p2)  	return bda ? bacmp(&pb1->bdaddr, bda) : -1;  } -void hcid_dbus_new_auth_request(bdaddr_t *sba, bdaddr_t *dba, auth_type_t type) +static void hcid_dbus_new_auth_request(struct adapter *adapter, bdaddr_t *dba, +					auth_type_t type)  { -	struct adapter *adapter;  	struct pending_auth_info *info; -	adapter = manager_find_adapter(sba); -	if (!adapter) { -		error("No matching adapter found"); -		return; -	} -  	debug("hcid_dbus_new_auth_request");  	info = g_new0(struct pending_auth_info, 1); @@ -913,6 +907,7 @@ int hcid_dbus_request_pin(int dev, bdaddr_t *sba, struct hci_conn_info *ci)  	struct adapter *adapter;  	struct device *device;  	struct agent *agent; +	int ret;  	adapter = manager_find_adapter(sba);  	if (!adapter) { @@ -936,13 +931,23 @@ int hcid_dbus_request_pin(int dev, bdaddr_t *sba, struct hci_conn_info *ci)  			return -ENODEV;  	} -	return agent_request_pincode(agent, device, +	ret = agent_request_pincode(agent, device,  					(agent_pincode_cb) pincode_cb,  					device); +	if (ret == 0) +		hcid_dbus_new_auth_request(adapter, &ci->bdaddr, +						AUTH_TYPE_PINCODE); + +	return ret;  old_fallback: -	return handle_passkey_request_old(connection, dev, adapter, -							sba, &ci->bdaddr); +	ret = handle_passkey_request_old(connection, dev, adapter, sba, +						&ci->bdaddr); +	if (ret == 0) +		hcid_dbus_new_auth_request(adapter, &ci->bdaddr, +						AUTH_TYPE_PINCODE); + +	return ret;  }  static void confirm_cb(struct agent *agent, DBusError *err, void *user_data) @@ -1099,6 +1104,8 @@ int hcid_dbus_user_confirm(bdaddr_t *sba, bdaddr_t *dba, uint32_t passkey)  		return -1;  	} +	hcid_dbus_new_auth_request(adapter, dba, AUTH_TYPE_CONFIRM); +  	return 0;  } @@ -1133,6 +1140,8 @@ int hcid_dbus_user_passkey(bdaddr_t *sba, bdaddr_t *dba)  		return -1;  	} +	hcid_dbus_new_auth_request(adapter, dba, AUTH_TYPE_PASSKEY); +  	return 0;  } @@ -1167,6 +1176,8 @@ int hcid_dbus_user_notify(bdaddr_t *sba, bdaddr_t *dba, uint32_t passkey)  		return -1;  	} +	hcid_dbus_new_auth_request(adapter, dba, AUTH_TYPE_NOTIFY); +  	return 0;  } diff --git a/hcid/dbus-hci.h b/hcid/dbus-hci.h index 1c5bca90..f4dfa018 100644 --- a/hcid/dbus-hci.h +++ b/hcid/dbus-hci.h @@ -36,7 +36,6 @@ int hcid_dbus_register_device(uint16_t id);  int hcid_dbus_unregister_device(uint16_t id);  int hcid_dbus_start_device(uint16_t id);  int hcid_dbus_stop_device(uint16_t id); -void hcid_dbus_new_auth_request(bdaddr_t *sba, bdaddr_t *dba, auth_type_t type);  int hcid_dbus_request_pin(int dev, bdaddr_t *sba, struct hci_conn_info *ci);  void hcid_dbus_inquiry_start(bdaddr_t *local); diff --git a/hcid/security.c b/hcid/security.c index 9a1b373b..c5cfdb65 100644 --- a/hcid/security.c +++ b/hcid/security.c @@ -385,9 +385,6 @@ static void user_confirm_request(int dev, bdaddr_t *sba, void *ptr)  					btohl(req->passkey)) < 0)  		hci_send_cmd(dev, OGF_LINK_CTL,  				OCF_USER_CONFIRM_NEG_REPLY, 6, ptr); -	else -		hcid_dbus_new_auth_request(sba, &req->bdaddr, -						AUTH_TYPE_CONFIRM);  }  static void user_passkey_request(int dev, bdaddr_t *sba, void *ptr) @@ -397,17 +394,13 @@ static void user_passkey_request(int dev, bdaddr_t *sba, void *ptr)  	if (hcid_dbus_user_passkey(sba, &req->bdaddr) < 0)  		hci_send_cmd(dev, OGF_LINK_CTL,  				OCF_USER_PASSKEY_NEG_REPLY, 6, ptr); -	else -		hcid_dbus_new_auth_request(sba, &req->bdaddr, -						AUTH_TYPE_PASSKEY);  }  static void user_passkey_notify(int dev, bdaddr_t *sba, void *ptr)  {  	evt_user_passkey_notify *req = ptr; -	if (hcid_dbus_user_notify(sba, &req->bdaddr, btohl(req->passkey)) == 0) -		hcid_dbus_new_auth_request(sba, &req->bdaddr, AUTH_TYPE_NOTIFY); +	hcid_dbus_user_notify(sba, &req->bdaddr, btohl(req->passkey));  }  static void remote_oob_data_request(int dev, bdaddr_t *sba, void *ptr) @@ -522,7 +515,6 @@ static void pin_code_request(int dev, bdaddr_t *sba, bdaddr_t *dba)  			/* Request PIN from passkey agent */  			if (hcid_dbus_request_pin(dev, sba, ci) < 0)  				goto reject; -			hcid_dbus_new_auth_request(sba, dba, AUTH_TYPE_PINCODE);  		}  	} | 
