diff options
| author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2006-06-02 14:57:57 +0000 | 
|---|---|---|
| committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2006-06-02 14:57:57 +0000 | 
| commit | 798f888e7b2b0c94705bd1aea9a81934a1331d03 (patch) | |
| tree | 132d6387bbb930bdb37838048d158a957816343c | |
| parent | 5093d69a31cfc7e27235c7e9d6481c82e3867891 (diff) | |
RemoveBonding: return DoesNotExist when the link key is not found
| -rw-r--r-- | hcid/dbus-adapter.c | 15 | 
1 files changed, 12 insertions, 3 deletions
| diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index 86a43c81..1d1b7762 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -1783,7 +1783,7 @@ static DBusHandlerResult handle_dev_remove_bonding_req(DBusConnection *conn, DBu  	DBusMessage *signal;  	DBusError err;  	char filename[PATH_MAX + 1]; -	char *addr_ptr; +	char *addr_ptr, *str;  	bdaddr_t bdaddr;  	int dd; @@ -1807,12 +1807,21 @@ static DBusHandlerResult handle_dev_remove_bonding_req(DBusConnection *conn, DBu  	snprintf(filename, PATH_MAX, "%s/%s/linkkeys", STORAGEDIR, dbus_data->address); -	/* Delete the link key from storage */ -	if (textfile_del(filename, addr_ptr)) { +	/* textfile_del doesn't return an error when the key is not found */ +	str = textfile_get(filename, addr_ptr); +	if (!str) {  		hci_close_dev(dd);  		return error_bonding_does_not_exist(conn, msg);  	} +	free(str); + +	/* Delete the link key from storage */ +	if (textfile_del(filename, addr_ptr) < 0) { +		hci_close_dev(dd); +		return error_failed(conn, msg, errno); +	} +  	str2ba(addr_ptr, &bdaddr);  	/* Delete the link key from the Bluetooth chip */ | 
