diff options
| author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2006-08-23 17:29:51 +0000 | 
|---|---|---|
| committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2006-08-23 17:29:51 +0000 | 
| commit | 657ab7521130ad1335cfb2f0352b59a2516c41fb (patch) | |
| tree | 6c8b201a575e8a20dceff028cf2a98cc7d1338a4 | |
| parent | 03225713f1f27212e864e1e04b72f89663587ca2 (diff) | |
Fixed bonding reply message when disconnected
| -rw-r--r-- | hcid/dbus.c | 15 | 
1 files changed, 10 insertions, 5 deletions
| diff --git a/hcid/dbus.c b/hcid/dbus.c index cc541825..c9aca3c5 100644 --- a/hcid/dbus.c +++ b/hcid/dbus.c @@ -1359,6 +1359,11 @@ void hcid_dbus_disconn_complete(bdaddr_t *local, uint8_t status, uint16_t handle  	bdaddr_t tmp;  	int id; +	if (status) { +		error("Disconnection failed: 0x%02x", status); +		return; +	} +  	baswap(&tmp, local); local_addr = batostr(&tmp);  	id = hci_devid(local_addr); @@ -1386,6 +1391,10 @@ void hcid_dbus_disconn_complete(bdaddr_t *local, uint8_t status, uint16_t handle  	/* clean pending HCI cmds */  	hci_req_queue_remove(pdata->dev_id, &dev->bdaddr); +	/* Cancel D-Bus/non D-Bus requests */ +	cancel_passkey_agent_requests(pdata->passkey_agents, path, &dev->bdaddr); +	release_passkey_agents(pdata, &dev->bdaddr); +  	/* Check if there is a pending CreateBonding request */  	if (pdata->bonding && (bacmp(&pdata->bonding->bdaddr, &dev->bdaddr) == 0)) {  #if 0 @@ -1396,7 +1405,7 @@ void hcid_dbus_disconn_complete(bdaddr_t *local, uint8_t status, uint16_t handle  		send_reply_and_unref(connection, message);  #endif -		message = dbus_msg_new_authentication_return(pdata->bonding->rq, status); +		message = dbus_msg_new_authentication_return(pdata->bonding->rq, HCI_AUTHENTICATION_FAILURE);  		send_reply_and_unref(connection, message);  		name_listener_remove(connection, dbus_message_get_sender(pdata->bonding->rq), @@ -1404,10 +1413,6 @@ void hcid_dbus_disconn_complete(bdaddr_t *local, uint8_t status, uint16_t handle  		bonding_request_free(pdata->bonding);  		pdata->bonding = NULL;  	} - -	cancel_passkey_agent_requests(pdata->passkey_agents, path, &dev->bdaddr); -	release_passkey_agents(pdata, &dev->bdaddr); -  	/* Sent the remote device disconnected signal */  	message = dev_signal_factory(pdata->dev_id, "RemoteDeviceDisconnected",  					DBUS_TYPE_STRING, &peer_addr, | 
