diff options
| -rw-r--r-- | hcid/adapter.c | 25 | 
1 files changed, 20 insertions, 5 deletions
| diff --git a/hcid/adapter.c b/hcid/adapter.c index 8d71b3bd..82b0e3f7 100644 --- a/hcid/adapter.c +++ b/hcid/adapter.c @@ -2611,6 +2611,24 @@ cleanup:  	return FALSE;  } +static void cancel_auth_request(int dd, auth_type_t type, bdaddr_t *bda) +{ +	switch (type) { +	case AUTH_TYPE_PINCODE: +		hci_send_cmd(dd, OGF_LINK_CTL, OCF_PIN_CODE_NEG_REPLY, +				6, bda); +		break; +	case AUTH_TYPE_CONFIRM: +		hci_send_cmd(dd, OGF_LINK_CTL, OCF_USER_CONFIRM_NEG_REPLY, +				6, bda); +		break; +	case AUTH_TYPE_PASSKEY: +		hci_send_cmd(dd, OGF_LINK_CTL, OCF_USER_PASSKEY_NEG_REPLY, +				6, bda); +		break; +	} +} +  static void create_bond_req_exit(void *user_data)  {  	struct adapter *adapter = user_data; @@ -2635,9 +2653,7 @@ static void create_bond_req_exit(void *user_data)  			dd = hci_open_dev(adapter->dev_id);  			if (dd >= 0) { -				hci_send_cmd(dd, OGF_LINK_CTL, -						OCF_PIN_CODE_NEG_REPLY, -						6, &adapter->bonding->bdaddr); +				cancel_auth_request(dd, p->type, &p->bdaddr);  				hci_close_dev(dd);  			}  		} @@ -2792,8 +2808,7 @@ static DBusMessage *adapter_cancel_bonding(DBusConnection *conn,  				return failed_strerror(msg, err);  			} -			hci_send_cmd(dd, OGF_LINK_CTL, OCF_PIN_CODE_NEG_REPLY, -					6, &bdaddr); +			cancel_auth_request(dd, pin_req->type, &pin_req->bdaddr);  			hci_close_dev(dd);  		} | 
