From 138df419579f4a02b63f1055a436bc721b02ca2f Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Wed, 24 Jan 2007 15:15:05 +0000 Subject: Fully implement Database.UnregisterService --- hcid/dbus-database.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'hcid/dbus-database.c') diff --git a/hcid/dbus-database.c b/hcid/dbus-database.c index 695970f8..423d117b 100644 --- a/hcid/dbus-database.c +++ b/hcid/dbus-database.c @@ -297,6 +297,7 @@ static DBusHandlerResult unregister_service(DBusConnection *conn, { DBusMessage *reply; const char *sender, *ident; + struct service *service; if (!hcid_dbus_use_experimental()) return error_unknown_method(conn, msg); @@ -307,6 +308,16 @@ static DBusHandlerResult unregister_service(DBusConnection *conn, sender = dbus_message_get_sender(msg); + service = search_service(conn, ident); + if (!service) + return error_service_does_not_exist(conn, msg); + + if (!service->internal || strcmp(sender, service->bus_name)) + return error_not_authorized(conn, msg); + + if (service_unregister(service) < 0) + return error_failed(conn, msg, EIO); + reply = dbus_message_new_method_return(msg); if (!reply) return DBUS_HANDLER_RESULT_NEED_MEMORY; -- cgit