chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core: don't reset log level to NOTICE if we get quiet on the kernel cmdline
[elogind.git]
/
src
/
login
/
logind-session.c
diff --git
a/src/login/logind-session.c
b/src/login/logind-session.c
index c1800e085464ed6a28593e56525f5cdc5904f777..a02a537f7ca00666a2316ec357408d84d2323c32 100644
(file)
--- a/
src/login/logind-session.c
+++ b/
src/login/logind-session.c
@@
-301,6
+301,7
@@
int session_load(Session *s) {
_cleanup_free_ char *remote = NULL,
*seat = NULL,
*vtnr = NULL,
_cleanup_free_ char *remote = NULL,
*seat = NULL,
*vtnr = NULL,
+ *state = NULL,
*pos = NULL,
*leader = NULL,
*type = NULL,
*pos = NULL,
*leader = NULL,
*type = NULL,
@@
-327,6
+328,7
@@
int session_load(Session *s) {
"SERVICE", &s->service,
"DESKTOP", &s->desktop,
"VTNR", &vtnr,
"SERVICE", &s->service,
"DESKTOP", &s->desktop,
"VTNR", &vtnr,
+ "STATE", &state,
"POS", &pos,
"LEADER", &leader,
"TYPE", &type,
"POS", &pos,
"LEADER", &leader,
"TYPE", &type,
@@
-355,7
+357,7
@@
int session_load(Session *s) {
return r;
}
return r;
}
- user = hashmap_get(s->manager->users, U
LONG_TO_PTR((unsigned long)
u));
+ user = hashmap_get(s->manager->users, U
ID_TO_PTR(
u));
if (!user) {
log_error("User of session %s not known.", s->id);
return -ENOENT;
if (!user) {
log_error("User of session %s not known.", s->id);
return -ENOENT;
@@
-415,13
+417,18
@@
int session_load(Session *s) {
s->class = c;
}
s->class = c;
}
+ if (state && streq(state, "closing"))
+ s->stopping = true;
+
if (s->fifo_path) {
int fd;
/* If we open an unopened pipe for reading we will not
get an EOF. to trigger an EOF we hence open it for
if (s->fifo_path) {
int fd;
/* If we open an unopened pipe for reading we will not
get an EOF. to trigger an EOF we hence open it for
- reading, but close it right-away which then will
- trigger the EOF. */
+ writing, but close it right away which then will
+ trigger the EOF. This will happen immediately if no
+ other process has the FIFO open for writing, i. e.
+ when the session died before logind (re)started. */
fd = session_create_fifo(s);
safe_close(fd);
fd = session_create_fifo(s);
safe_close(fd);
@@
-967,10
+974,8
@@
static int session_open_vt(Session *s) {
sprintf(path, "/dev/tty%u", s->vtnr);
s->vtfd = open(path, O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY);
sprintf(path, "/dev/tty%u", s->vtnr);
s->vtfd = open(path, O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY);
- if (s->vtfd < 0) {
- log_error_errno(errno, "cannot open VT %s of session %s: %m", path, s->id);
- return -errno;
- }
+ if (s->vtfd < 0)
+ return log_error_errno(errno, "cannot open VT %s of session %s: %m", path, s->id);
return s->vtfd;
}
return s->vtfd;
}