X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind-session-dbus.c;h=b0db8e2ccb6cdf06e0a844d2d031b32b4bf89dba;hb=bf2098e9e4837573d84dd4949b9c28a7372c93b9;hp=337bbbbe8d141583c0105637dc6d1e16e87ca15c;hpb=b5c5dd2ad43a3bf4fa0fb21139f8d16959b5d14e;p=elogind.git diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index 337bbbbe8..b0db8e2cc 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -163,7 +163,7 @@ static int property_get_idle_since_hint( sd_bus_error *error) { Session *s = userdata; - dual_timestamp t; + dual_timestamp t = DUAL_TIMESTAMP_NULL; uint64_t u; int r; @@ -180,11 +180,10 @@ static int property_get_idle_since_hint( return sd_bus_message_append(reply, "t", u); } -int bus_session_method_terminate(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { +int bus_session_method_terminate(sd_bus_message *message, void *userdata, sd_bus_error *error) { Session *s = userdata; int r; - assert(bus); assert(message); assert(s); @@ -192,6 +191,7 @@ int bus_session_method_terminate(sd_bus *bus, sd_bus_message *message, void *use message, CAP_KILL, "org.freedesktop.login1.manage", + NULL, false, s->user->uid, &s->manager->polkit_registry, @@ -208,11 +208,10 @@ int bus_session_method_terminate(sd_bus *bus, sd_bus_message *message, void *use return sd_bus_reply_method_return(message, NULL); } -int bus_session_method_activate(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { +int bus_session_method_activate(sd_bus_message *message, void *userdata, sd_bus_error *error) { Session *s = userdata; int r; - assert(bus); assert(message); assert(s); @@ -223,11 +222,10 @@ int bus_session_method_activate(sd_bus *bus, sd_bus_message *message, void *user return sd_bus_reply_method_return(message, NULL); } -int bus_session_method_lock(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { +int bus_session_method_lock(sd_bus_message *message, void *userdata, sd_bus_error *error) { Session *s = userdata; int r; - assert(bus); assert(message); assert(s); @@ -235,6 +233,7 @@ int bus_session_method_lock(sd_bus *bus, sd_bus_message *message, void *userdata message, CAP_SYS_ADMIN, "org.freedesktop.login1.lock-sessions", + NULL, false, s->user->uid, &s->manager->polkit_registry, @@ -251,13 +250,12 @@ int bus_session_method_lock(sd_bus *bus, sd_bus_message *message, void *userdata return sd_bus_reply_method_return(message, NULL); } -static int method_set_idle_hint(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { +static int method_set_idle_hint(sd_bus_message *message, void *userdata, sd_bus_error *error) { _cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL; Session *s = userdata; uid_t uid; int r, b; - assert(bus); assert(message); assert(s); @@ -281,14 +279,13 @@ static int method_set_idle_hint(sd_bus *bus, sd_bus_message *message, void *user return sd_bus_reply_method_return(message, NULL); } -int bus_session_method_kill(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { +int bus_session_method_kill(sd_bus_message *message, void *userdata, sd_bus_error *error) { Session *s = userdata; const char *swho; int32_t signo; KillWho who; int r; - assert(bus); assert(message); assert(s); @@ -311,6 +308,7 @@ int bus_session_method_kill(sd_bus *bus, sd_bus_message *message, void *userdata message, CAP_KILL, "org.freedesktop.login1.manage", + NULL, false, s->user->uid, &s->manager->polkit_registry, @@ -327,13 +325,12 @@ int bus_session_method_kill(sd_bus *bus, sd_bus_message *message, void *userdata return sd_bus_reply_method_return(message, NULL); } -static int method_take_control(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { +static int method_take_control(sd_bus_message *message, void *userdata, sd_bus_error *error) { _cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL; Session *s = userdata; int r, force; uid_t uid; - assert(bus); assert(message); assert(s); @@ -359,10 +356,9 @@ static int method_take_control(sd_bus *bus, sd_bus_message *message, void *userd return sd_bus_reply_method_return(message, NULL); } -static int method_release_control(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { +static int method_release_control(sd_bus_message *message, void *userdata, sd_bus_error *error) { Session *s = userdata; - assert(bus); assert(message); assert(s); @@ -374,14 +370,13 @@ static int method_release_control(sd_bus *bus, sd_bus_message *message, void *us return sd_bus_reply_method_return(message, NULL); } -static int method_take_device(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { +static int method_take_device(sd_bus_message *message, void *userdata, sd_bus_error *error) { Session *s = userdata; uint32_t major, minor; SessionDevice *sd; dev_t dev; int r; - assert(bus); assert(message); assert(s); @@ -413,14 +408,13 @@ static int method_take_device(sd_bus *bus, sd_bus_message *message, void *userda return r; } -static int method_release_device(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { +static int method_release_device(sd_bus_message *message, void *userdata, sd_bus_error *error) { Session *s = userdata; uint32_t major, minor; SessionDevice *sd; dev_t dev; int r; - assert(bus); assert(message); assert(s); @@ -440,14 +434,13 @@ static int method_release_device(sd_bus *bus, sd_bus_message *message, void *use return sd_bus_reply_method_return(message, NULL); } -static int method_pause_device_complete(sd_bus *bus, sd_bus_message *message, void *userdata, sd_bus_error *error) { +static int method_pause_device_complete(sd_bus_message *message, void *userdata, sd_bus_error *error) { Session *s = userdata; uint32_t major, minor; SessionDevice *sd; dev_t dev; int r; - assert(bus); assert(message); assert(s); @@ -711,6 +704,12 @@ int session_send_create_reply(Session *s, sd_bus_error *error) { if (!s->create_message) return 0; +/// elogind does not support scope and service jobs +#if 0 + if (!sd_bus_error_is_set(error) && (s->scope_job || s->user->service_job)) + return 0; +#endif // 0 + c = s->create_message; s->create_message = NULL; @@ -721,10 +720,9 @@ int session_send_create_reply(Session *s, sd_bus_error *error) { if (fifo_fd < 0) return fifo_fd; - /* Update the session and user state files before we notify - * the client about the result. */ + /* Update the session state file before we notify the client + * about the result. */ session_save(s); - user_save(s->user); p = session_bus_path(s); if (!p)