1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-03-08 20:58:20 +03:00

loginctl: use /org/freedesktop/login1/session/auto when "lock-session" is called without argument

This way we'll use the "display" session automatically, and that makes
the call work when invoked from user@.service.

Fixes: #13614
This commit is contained in:
Lennart Poettering 2020-01-21 13:43:04 +01:00 committed by Yu Watanabe
parent fbbe240b21
commit dc084399fa

View File

@ -981,7 +981,6 @@ static int show_seat(int argc, char *argv[], void *userdata) {
static int activate(int argc, char *argv[], void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
sd_bus *bus = userdata;
char *short_argv[3];
int r, i;
assert(bus);
@ -990,12 +989,20 @@ static int activate(int argc, char *argv[], void *userdata) {
polkit_agent_open_if_enabled(arg_transport, arg_ask_password);
if (argc < 2) {
short_argv[0] = argv[0];
short_argv[1] = (char*) "";
short_argv[2] = NULL;
r = sd_bus_call_method(
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1/session/auto",
"org.freedesktop.login1.Session",
streq(argv[0], "lock-session") ? "Lock" :
streq(argv[0], "unlock-session") ? "Unlock" :
streq(argv[0], "terminate-session") ? "Terminate" :
"Activate",
&error, NULL, NULL);
if (r < 0)
return log_error_errno(r, "Failed to issue method call: %s", bus_error_message(&error, r));
argv = short_argv;
argc = 2;
return 0;
}
for (i = 1; i < argc; i++) {