diff options
Diffstat (limited to 'hcid/dbus-adapter.c')
| -rw-r--r-- | hcid/dbus-adapter.c | 68 | 
1 files changed, 23 insertions, 45 deletions
| diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index ecfe0198..e0cce6bb 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -857,14 +857,6 @@ static DBusHandlerResult handle_dev_get_remote_version_req(DBusConnection *conn,  	if (ecode < 0)  		return error_failed(conn, msg, -ecode); -	snprintf(filename, PATH_MAX, "%s/%s/lastseen", STORAGEDIR, addr); - -	str = textfile_get(filename, addr_ptr); -	if (!str) -		return error_unknown_address(conn, msg); - -	free(str); -  	snprintf(filename, PATH_MAX, "%s/%s/manufacturers", STORAGEDIR, addr);  	str = textfile_get(filename, addr_ptr); @@ -944,14 +936,6 @@ static DBusHandlerResult handle_dev_get_remote_revision_req(DBusConnection *conn  	if (ecode < 0)  		return error_failed(conn, msg, -ecode); -	snprintf(filename, PATH_MAX, "%s/%s/lastseen", STORAGEDIR, addr); - -	str = textfile_get(filename, addr_ptr); -	if (!str) -		return error_unknown_address(conn, msg); - -	free(str); -  	snprintf(filename, PATH_MAX, "%s/%s/manufacturers", STORAGEDIR, addr);  	str = textfile_get(filename, addr_ptr); @@ -1004,14 +988,6 @@ static DBusHandlerResult handle_dev_get_remote_manufacturer_req(DBusConnection *  	if (ecode < 0)  		return error_failed(conn, msg, -ecode); -	snprintf(filename, PATH_MAX, "%s/%s/lastseen", STORAGEDIR, addr); - -	str = textfile_get(filename, addr_ptr); -	if (!str) -		return error_unknown_address(conn, msg); - -	free(str); -  	snprintf(filename, PATH_MAX, "%s/%s/manufacturers", STORAGEDIR, addr);  	str = textfile_get(filename, addr_ptr); @@ -1056,7 +1032,7 @@ static DBusHandlerResult handle_dev_get_remote_company_req(DBusConnection *conn,  	tmp = ouitocomp(oui);  	if (!tmp) -		return error_record_does_not_exist(conn, msg); +		return error_not_available(conn, msg);  	reply = dbus_message_new_method_return(msg);  	if (!reply) { @@ -1108,7 +1084,7 @@ static int get_remote_class(DBusConnection *conn, DBusMessage *msg, void *data,  	ecode = read_remote_class(&local, &peer, class);  	if (ecode < 0) { -		error_failed(conn, msg, -ecode); +		error_not_available(conn, msg);  		return -1;  	} @@ -1299,7 +1275,7 @@ static DBusHandlerResult handle_dev_get_remote_alias_req(DBusConnection *conn, D  	ecode = get_device_alias(dbus_data->dev_id, &bdaddr, str, sizeof(str));  	if (ecode < 0) -		return error_failed(conn, msg, -ecode); +		return error_not_available(conn, msg);  	reply = dbus_message_new_method_return(msg);  	if (!reply) @@ -1446,7 +1422,7 @@ static DBusHandlerResult handle_dev_last_seen_req(DBusConnection *conn, DBusMess  	str = textfile_get(filename, addr_ptr);  	if (!str) -		return error_failed(conn, msg, ENXIO); +		return error_not_available(conn, msg);  	reply = dbus_message_new_method_return(msg);  	if (!reply) { @@ -1494,7 +1470,7 @@ static DBusHandlerResult handle_dev_last_used_req(DBusConnection *conn, DBusMess  	str = textfile_get(filename, addr_ptr);  	if (!str) -		return error_failed(conn, msg, ENXIO); +		return error_not_available(conn, msg);  	reply = dbus_message_new_method_return(msg);  	if (!reply) { @@ -1520,6 +1496,9 @@ static DBusHandlerResult handle_dev_disconnect_remote_device_req(DBusConnection  	const char *peer_addr;  	bdaddr_t peer_bdaddr; +	int dd; +	struct active_conn_info *dev; +  	dbus_error_init(&err);  	dbus_message_get_args(msg, &err, @@ -1538,24 +1517,23 @@ static DBusHandlerResult handle_dev_disconnect_remote_device_req(DBusConnection  	str2ba(peer_addr, &peer_bdaddr);  	l = slist_find(l, &peer_bdaddr, active_conn_find_by_bdaddr); -	if (l) { -		int dd; -		struct active_conn_info *dev = l->data; +	if (!l) +		return error_not_connected(conn, msg); -		dd = hci_open_dev(dbus_data->dev_id); -		if (dd < 0) -			return error_no_such_adapter(conn, msg); +	dev = l->data; -		/* Send the HCI disconnect command */ -		if (hci_disconnect(dd, dev->handle, HCI_OE_USER_ENDED_CONNECTION, 100) < 0) { -			error("Disconnect failed"); -			hci_close_dev(dd); -			return error_failed(conn, msg, errno); -		} +	dd = hci_open_dev(dbus_data->dev_id); +	if (dd < 0) +		return error_no_such_adapter(conn, msg); +	/* Send the HCI disconnect command */ +	if (hci_disconnect(dd, dev->handle, HCI_OE_USER_ENDED_CONNECTION, 100) < 0) { +		error("Disconnect failed");  		hci_close_dev(dd); -	} else  -		return error_not_connected(conn, msg); +		return error_failed(conn, msg, errno); +	} + +	hci_close_dev(dd);  	reply = dbus_message_new_method_return(msg);  	if (!reply) @@ -1981,7 +1959,7 @@ static DBusHandlerResult handle_dev_get_pin_code_length_req(DBusConnection *conn  	len = read_pin_length(&local, &peer);  	if (len < 0) -		return error_failed(conn, msg, -len); +		return error_record_does_not_exist(conn, msg);  	reply = dbus_message_new_method_return(msg); @@ -2236,7 +2214,7 @@ static struct service_data dev_services[] = {  	{ "ListAvailableMinorClasses",			handle_dev_list_minor_classes_req	},  	{ "GetMinorClass",				handle_dev_get_minor_class_req		},  	{ "SetMinorClass",				handle_dev_set_minor_class_req		}, -	{ "GetServicesClasses",				handle_dev_get_service_classes_req	}, +	{ "GetServiceClasses",				handle_dev_get_service_classes_req	},  	{ "GetName",					handle_dev_get_name_req			},  	{ "SetName",					handle_dev_set_name_req			}, | 
