Blob Blame History Raw
From 74fed8d975fd2e2cba644eeb8021393fc81b7151 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Fri, 10 Aug 2018 15:15:51 -0400
Subject: [PATCH 3/3] lib: don't fail loading if logind isn't working right

At the moment if logind can fail in two ways when
asking the session associated with the current pid:

1) ENOENT, the process isn't part of a registered session
2) ENODATA, the mechanism for checking which session a
process is registered with isn't working.

If we hit the second case then wefail loading the user manager
entirely.  This leads to the dbus proxy associated with a user
from loading and the user getting stuck with defaults like a
NULL xsession and systemaccount=TRUE

This commit changes the behavior for the second case to be
like the first. Namely, to accept there's no associated
session and carry on as best we can.
---
 src/libaccountsservice/act-user-manager.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/src/libaccountsservice/act-user-manager.c b/src/libaccountsservice/act-user-manager.c
index e7e26b1..6dc1d15 100644
--- a/src/libaccountsservice/act-user-manager.c
+++ b/src/libaccountsservice/act-user-manager.c
@@ -1139,12 +1139,9 @@ _get_current_systemd_session_id (ActUserManager *manager)
         res = sd_pid_get_session (0, &session_id);
 
         if (res == -ENOENT) {
-                session_id = NULL;
-        } else if (res < 0) {
                 g_debug ("Failed to identify the current session: %s",
                          strerror (-res));
-                unload_seat (manager);
-                return;
+                session_id = NULL;
         }
 
         manager->priv->seat.session_id = g_strdup (session_id);
-- 
2.19.0