summaryrefslogtreecommitdiff
path: root/src/logind-user.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-06-24 19:42:45 +0200
committerLennart Poettering <lennart@poettering.net>2011-06-24 19:42:45 +0200
commited18b08bed983b845c72a83666a7d7db546d89ad (patch)
treeabfd2a0deea88527011c95bf599d43b8f5644dc3 /src/logind-user.c
parent98a28fef2618e54a644614c759f371f297381b70 (diff)
logind: various clean-ups
Diffstat (limited to 'src/logind-user.c')
-rw-r--r--src/logind-user.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/logind-user.c b/src/logind-user.c
index 8ebd6eca23..63033e0fd3 100644
--- a/src/logind-user.c
+++ b/src/logind-user.c
@@ -265,6 +265,8 @@ int user_start(User *u) {
if (u->started)
return 0;
+ log_info("New user %s logged in.", u->name);
+
/* Make XDG_RUNTIME_DIR */
r = user_mkdir_runtime_path(u);
if (r < 0)
@@ -304,7 +306,16 @@ static int user_stop_service(User *u) {
static int user_shall_kill(User *u) {
assert(u);
- return u->manager->kill_user_processes;
+ if (!u->manager->kill_user_processes)
+ return false;
+
+ if (strv_contains(u->manager->kill_exclude_users, u->name))
+ return false;
+
+ if (strv_isempty(u->manager->kill_only_users))
+ return true;
+
+ return strv_contains(u->manager->kill_only_users, u->name);
}
static int user_kill_cgroup(User *u) {
@@ -368,8 +379,8 @@ int user_stop(User *u) {
int r = 0, k;
assert(u);
- if (!u->started)
- return 0;
+ if (u->started)
+ log_info("User %s logged out.", u->name);
LIST_FOREACH(sessions_by_user, s, u->sessions) {
k = session_stop(s);
@@ -377,8 +388,6 @@ int user_stop(User *u) {
r = k;
}
- user_send_signal(u, false);
-
/* Kill systemd */
k = user_stop_service(u);
if (k < 0)
@@ -397,6 +406,9 @@ int user_stop(User *u) {
unlink(u->state_file);
user_add_to_gc_queue(u);
+ if (u->started)
+ user_send_signal(u, false);
+
u->started = false;
return r;