diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-06-24 19:42:45 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-06-24 19:42:45 +0200 |
commit | ed18b08bed983b845c72a83666a7d7db546d89ad (patch) | |
tree | abfd2a0deea88527011c95bf599d43b8f5644dc3 /src/logind-user.c | |
parent | 98a28fef2618e54a644614c759f371f297381b70 (diff) |
logind: various clean-ups
Diffstat (limited to 'src/logind-user.c')
-rw-r--r-- | src/logind-user.c | 22 |
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; |