X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogind-dbus.c;fp=src%2Flogind-dbus.c;h=ec39d56d9e2ce13f7ace722998f7cc3509da4d11;hb=88e3dc903bd543a74b8699c1575b0da9eeab24a2;hp=a2a442ee271732d589e1b7db491f2ae4c25c853e;hpb=d4b36d99f1b3821243d3f122128623dd2653b1cf;p=elogind.git diff --git a/src/logind-dbus.c b/src/logind-dbus.c index a2a442ee2..ec39d56d9 100644 --- a/src/logind-dbus.c +++ b/src/logind-dbus.c @@ -75,6 +75,12 @@ " \n" \ " \n" \ " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -980,6 +986,29 @@ static DBusHandlerResult manager_message_handler( if (!reply) goto oom; + } else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "LockSession") || + dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "UnlockSession")) { + const char *name; + Session *session; + + if (!dbus_message_get_args( + message, + &error, + DBUS_TYPE_STRING, &name, + DBUS_TYPE_INVALID)) + return bus_send_error_reply(connection, message, &error, -EINVAL); + + session = hashmap_get(m->sessions, name); + if (!session) + return bus_send_error_reply(connection, message, &error, -ENOENT); + + if (session_send_lock(session, streq(dbus_message_get_member(message), "LockSession")) < 0) + goto oom; + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + } else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "TerminateSession")) { const char *name; Session *session;