diff options
| author | Johan Hedberg <johan.hedberg@nokia.com> | 2007-04-11 13:31:25 +0000 | 
|---|---|---|
| committer | Johan Hedberg <johan.hedberg@nokia.com> | 2007-04-11 13:31:25 +0000 | 
| commit | c1c8c6366c341a90c2f22741e52b225171a1d3c5 (patch) | |
| tree | b9b197e2000e418a89be3e77eb72a367f6e0f65a | |
| parent | e0a2f55119eae4b8670a748205525ecff9bda5ae (diff) | |
Add signals for adding and removing trust
| -rw-r--r-- | hcid/dbus-adapter.c | 20 | ||||
| -rw-r--r-- | hcid/dbus-api.txt | 8 | ||||
| -rw-r--r-- | hcid/dbus-service.c | 26 | 
3 files changed, 45 insertions, 9 deletions
| diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index efbb0ac0..272f6d35 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -2815,7 +2815,7 @@ static DBusHandlerResult adapter_set_trusted(DBusConnection *conn,  						void *data)  {  	struct adapter *adapter = data; -	DBusMessage *reply; +	DBusMessage *reply, *signal;  	bdaddr_t local;  	const char *address; @@ -2835,6 +2835,11 @@ static DBusHandlerResult adapter_set_trusted(DBusConnection *conn,  	write_trust(&local, address, GLOBAL_TRUST, TRUE); +	signal = dev_signal_factory(adapter->dev_id, "TrustAdded", +						DBUS_TYPE_STRING, &address, +						DBUS_TYPE_INVALID); +	send_message_and_unref(conn, signal); +  	return send_message_and_unref(conn, reply);  } @@ -2876,7 +2881,7 @@ static DBusHandlerResult adapter_remove_trust(DBusConnection *conn,  						void *data)  {  	struct adapter *adapter = data; -	DBusMessage *reply; +	DBusMessage *reply, *signal;  	const char *address;  	bdaddr_t local; @@ -2888,13 +2893,18 @@ static DBusHandlerResult adapter_remove_trust(DBusConnection *conn,  	if (check_address(address) < 0)  		return error_invalid_arguments(conn, msg); +	reply = dbus_message_new_method_return(msg); +	if (!reply) +		return DBUS_HANDLER_RESULT_NEED_MEMORY; +  	str2ba(adapter->address, &local);  	write_trust(&local, address, GLOBAL_TRUST, FALSE); -	reply = dbus_message_new_method_return(msg); -	if (!reply) -		return DBUS_HANDLER_RESULT_NEED_MEMORY; +	signal = dev_signal_factory(adapter->dev_id, "TrustRemoved", +						DBUS_TYPE_STRING, &address, +						DBUS_TYPE_INVALID); +	send_message_and_unref(conn, signal);  	return send_message_and_unref(conn, reply);  } diff --git a/hcid/dbus-api.txt b/hcid/dbus-api.txt index 5a30898f..b76c86c6 100644 --- a/hcid/dbus-api.txt +++ b/hcid/dbus-api.txt @@ -1152,6 +1152,14 @@ Signals		void Started()  			The object path of this signal contains which service  			was stopped. +		void TrustAdded(string address) +			 +			Sent when SetTrusted() is called. + +		void TrustRemoved(string address) + +			Sent when RemoveTrust() is called. +  Security hierarchy  ================== diff --git a/hcid/dbus-service.c b/hcid/dbus-service.c index d9ce3536..803bef13 100644 --- a/hcid/dbus-service.c +++ b/hcid/dbus-service.c @@ -511,7 +511,7 @@ static DBusHandlerResult set_trusted(DBusConnection *conn,  					DBusMessage *msg, void *data)  {  	struct service *service = data; -	DBusMessage *reply; +	DBusMessage *reply, *signal;  	const char *address;  	if (!dbus_message_get_args(msg, NULL, @@ -526,8 +526,17 @@ static DBusHandlerResult set_trusted(DBusConnection *conn,  	if (!reply)  		return DBUS_HANDLER_RESULT_NEED_MEMORY; +	signal = dbus_message_new_signal(service->object_path, +					SERVICE_INTERFACE, "TrustAdded"); +	if (!signal) +		return DBUS_HANDLER_RESULT_NEED_MEMORY; +  	write_trust(BDADDR_ANY, address, service->ident, TRUE); +	dbus_message_append_args(signal, DBUS_TYPE_STRING, &address, +					DBUS_TYPE_INVALID); +	send_message_and_unref(conn, signal); +  	return send_message_and_unref(conn, reply);  } @@ -564,7 +573,7 @@ static DBusHandlerResult remove_trust(DBusConnection *conn,  					DBusMessage *msg, void *data)  {  	struct service *service = data; -	DBusMessage *reply; +	DBusMessage *reply, *signal;  	const char *address;  	if (!dbus_message_get_args(msg, NULL, @@ -575,12 +584,21 @@ static DBusHandlerResult remove_trust(DBusConnection *conn,  	if (check_address(address) < 0)  		return error_invalid_arguments(conn, msg); -	write_trust(BDADDR_ANY, address, service->ident, FALSE); -  	reply = dbus_message_new_method_return(msg);  	if (!reply)  		return DBUS_HANDLER_RESULT_NEED_MEMORY; +	signal = dbus_message_new_signal(service->object_path, +					SERVICE_INTERFACE, "TrustRemoved"); +	if (!signal) +		return DBUS_HANDLER_RESULT_NEED_MEMORY; + +	write_trust(BDADDR_ANY, address, service->ident, FALSE); + +	dbus_message_append_args(signal, DBUS_TYPE_STRING, &address, +					DBUS_TYPE_INVALID); +	send_message_and_unref(conn, signal); +  	return send_message_and_unref(conn, reply);  } | 
