chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Prep v228: Add remaining updates from upstream (3/3)
[elogind.git]
/
src
/
login
/
logind-session-dbus.c
diff --git
a/src/login/logind-session-dbus.c
b/src/login/logind-session-dbus.c
index b119c8321b6c6b514f91af2097a60b4fd4d8f978..0be2f8abef94791facedd88ef1654c82e57a6321 100644
(file)
--- a/
src/login/logind-session-dbus.c
+++ b/
src/login/logind-session-dbus.c
@@
-22,15
+22,16
@@
#include <errno.h>
#include <string.h>
#include <errno.h>
#include <string.h>
-#include "util.h"
-#include "strv.h"
-#include "bus-util.h"
+#include "alloc-util.h"
#include "bus-common-errors.h"
#include "bus-label.h"
#include "bus-common-errors.h"
#include "bus-label.h"
-
-#include "logind.h"
-#include "logind-session.h"
+#include "bus-util.h"
+#include "fd-util.h"
#include "logind-session-device.h"
#include "logind-session-device.h"
+#include "logind-session.h"
+#include "logind.h"
+#include "strv.h"
+#include "util.h"
static int property_get_user(
sd_bus *bus,
static int property_get_user(
sd_bus *bus,
@@
-163,7
+164,7
@@
static int property_get_idle_since_hint(
sd_bus_error *error) {
Session *s = userdata;
sd_bus_error *error) {
Session *s = userdata;
- dual_timestamp t;
+ dual_timestamp t
= DUAL_TIMESTAMP_NULL
;
uint64_t u;
int r;
uint64_t u;
int r;
@@
-180,11
+181,10
@@
static int property_get_idle_since_hint(
return sd_bus_message_append(reply, "t", u);
}
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;
Session *s = userdata;
int r;
- assert(bus);
assert(message);
assert(s);
assert(message);
assert(s);
@@
-192,6
+192,7
@@
int bus_session_method_terminate(sd_bus *bus, sd_bus_message *message, void *use
message,
CAP_KILL,
"org.freedesktop.login1.manage",
message,
CAP_KILL,
"org.freedesktop.login1.manage",
+ NULL,
false,
s->user->uid,
&s->manager->polkit_registry,
false,
s->user->uid,
&s->manager->polkit_registry,
@@
-208,11
+209,10
@@
int bus_session_method_terminate(sd_bus *bus, sd_bus_message *message, void *use
return sd_bus_reply_method_return(message, NULL);
}
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;
Session *s = userdata;
int r;
- assert(bus);
assert(message);
assert(s);
assert(message);
assert(s);
@@
-223,11
+223,10
@@
int bus_session_method_activate(sd_bus *bus, sd_bus_message *message, void *user
return sd_bus_reply_method_return(message, NULL);
}
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;
Session *s = userdata;
int r;
- assert(bus);
assert(message);
assert(s);
assert(message);
assert(s);
@@
-235,6
+234,7
@@
int bus_session_method_lock(sd_bus *bus, sd_bus_message *message, void *userdata
message,
CAP_SYS_ADMIN,
"org.freedesktop.login1.lock-sessions",
message,
CAP_SYS_ADMIN,
"org.freedesktop.login1.lock-sessions",
+ NULL,
false,
s->user->uid,
&s->manager->polkit_registry,
false,
s->user->uid,
&s->manager->polkit_registry,
@@
-251,13
+251,12
@@
int bus_session_method_lock(sd_bus *bus, sd_bus_message *message, void *userdata
return sd_bus_reply_method_return(message, NULL);
}
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;
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
Session *s = userdata;
uid_t uid;
int r, b;
- assert(bus);
assert(message);
assert(s);
assert(message);
assert(s);
@@
-281,14
+280,13
@@
static int method_set_idle_hint(sd_bus *bus, sd_bus_message *message, void *user
return sd_bus_reply_method_return(message, NULL);
}
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;
Session *s = userdata;
const char *swho;
int32_t signo;
KillWho who;
int r;
- assert(bus);
assert(message);
assert(s);
assert(message);
assert(s);
@@
-311,6
+309,7
@@
int bus_session_method_kill(sd_bus *bus, sd_bus_message *message, void *userdata
message,
CAP_KILL,
"org.freedesktop.login1.manage",
message,
CAP_KILL,
"org.freedesktop.login1.manage",
+ NULL,
false,
s->user->uid,
&s->manager->polkit_registry,
false,
s->user->uid,
&s->manager->polkit_registry,
@@
-327,13
+326,12
@@
int bus_session_method_kill(sd_bus *bus, sd_bus_message *message, void *userdata
return sd_bus_reply_method_return(message, NULL);
}
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;
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
Session *s = userdata;
int r, force;
uid_t uid;
- assert(bus);
assert(message);
assert(s);
assert(message);
assert(s);
@@
-359,10
+357,9
@@
static int method_take_control(sd_bus *bus, sd_bus_message *message, void *userd
return sd_bus_reply_method_return(message, NULL);
}
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;
Session *s = userdata;
- assert(bus);
assert(message);
assert(s);
assert(message);
assert(s);
@@
-374,14
+371,13
@@
static int method_release_control(sd_bus *bus, sd_bus_message *message, void *us
return sd_bus_reply_method_return(message, NULL);
}
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;
Session *s = userdata;
uint32_t major, minor;
SessionDevice *sd;
dev_t dev;
int r;
- assert(bus);
assert(message);
assert(s);
assert(message);
assert(s);
@@
-413,14
+409,13
@@
static int method_take_device(sd_bus *bus, sd_bus_message *message, void *userda
return r;
}
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;
Session *s = userdata;
uint32_t major, minor;
SessionDevice *sd;
dev_t dev;
int r;
- assert(bus);
assert(message);
assert(s);
assert(message);
assert(s);
@@
-440,14
+435,13
@@
static int method_release_device(sd_bus *bus, sd_bus_message *message, void *use
return sd_bus_reply_method_return(message, NULL);
}
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;
Session *s = userdata;
uint32_t major, minor;
SessionDevice *sd;
dev_t dev;
int r;
- assert(bus);
assert(message);
assert(s);
assert(message);
assert(s);
@@
-711,8
+705,11
@@
int session_send_create_reply(Session *s, sd_bus_error *error) {
if (!s->create_message)
return 0;
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;
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;
c = s->create_message;
s->create_message = NULL;
@@
-724,9
+721,10
@@
int session_send_create_reply(Session *s, sd_bus_error *error) {
if (fifo_fd < 0)
return fifo_fd;
if (fifo_fd < 0)
return fifo_fd;
- /* Update the session
state file before we notify the client
- * about the result. */
+ /* Update the session
and user state files before we notify
+ *
the client
about the result. */
session_save(s);
session_save(s);
+ user_save(s->user);
p = session_bus_path(s);
if (!p)
p = session_bus_path(s);
if (!p)