|
|
75a40aa |
From 09358813114e1c16b1ea02d80327e418a1809486 Mon Sep 17 00:00:00 2001
|
|
|
75a40aa |
From: Ray Strode <rstrode@redhat.com>
|
|
|
75a40aa |
Date: Sat, 5 May 2012 23:58:35 -0400
|
|
|
75a40aa |
Subject: [PATCH] worker: don't report session gone until closed
|
|
|
75a40aa |
|
|
|
75a40aa |
It's important we don't tell the slave the session
|
|
|
75a40aa |
has exited/died until we've called pam_close_session,
|
|
|
75a40aa |
since the slave reacts to it going way by closing
|
|
|
75a40aa |
down which can result in the worker getting explicitly
|
|
|
75a40aa |
killed before pam_close_session gets called.
|
|
|
75a40aa |
---
|
|
|
75a40aa |
daemon/gdm-session-worker.c | 20 ++++++++++----------
|
|
|
75a40aa |
1 file changed, 10 insertions(+), 10 deletions(-)
|
|
|
75a40aa |
|
|
|
75a40aa |
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
|
|
|
75a40aa |
index 869075b..449e7d1 100644
|
|
|
75a40aa |
--- a/daemon/gdm-session-worker.c
|
|
|
75a40aa |
+++ b/daemon/gdm-session-worker.c
|
|
|
75a40aa |
@@ -1639,6 +1639,16 @@ session_worker_child_watch (GPid pid,
|
|
|
75a40aa |
: WIFSIGNALED (status) ? WTERMSIG (status)
|
|
|
75a40aa |
: -1);
|
|
|
75a40aa |
|
|
|
75a40aa |
+#ifdef WITH_CONSOLE_KIT
|
|
|
75a40aa |
+ if (worker->priv->ckc != NULL) {
|
|
|
75a40aa |
+ ck_connector_close_session (worker->priv->ckc, NULL);
|
|
|
75a40aa |
+ ck_connector_unref (worker->priv->ckc);
|
|
|
75a40aa |
+ worker->priv->ckc = NULL;
|
|
|
75a40aa |
+ }
|
|
|
75a40aa |
+#endif
|
|
|
75a40aa |
+
|
|
|
75a40aa |
+ gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS);
|
|
|
75a40aa |
+
|
|
|
75a40aa |
if (WIFEXITED (status)) {
|
|
|
75a40aa |
int code = WEXITSTATUS (status);
|
|
|
75a40aa |
|
|
|
75a40aa |
@@ -1653,16 +1663,6 @@ session_worker_child_watch (GPid pid,
|
|
|
75a40aa |
num);
|
|
|
75a40aa |
}
|
|
|
75a40aa |
|
|
|
75a40aa |
-#ifdef WITH_CONSOLE_KIT
|
|
|
75a40aa |
- if (worker->priv->ckc != NULL) {
|
|
|
75a40aa |
- ck_connector_close_session (worker->priv->ckc, NULL);
|
|
|
75a40aa |
- ck_connector_unref (worker->priv->ckc);
|
|
|
75a40aa |
- worker->priv->ckc = NULL;
|
|
|
75a40aa |
- }
|
|
|
75a40aa |
-#endif
|
|
|
75a40aa |
-
|
|
|
75a40aa |
- gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS);
|
|
|
75a40aa |
-
|
|
|
75a40aa |
worker->priv->child_pid = -1;
|
|
|
75a40aa |
}
|
|
|
75a40aa |
|
|
|
75a40aa |
--
|
|
|
75a40aa |
1.7.10
|
|
|
75a40aa |
|
|
|
75a40aa |
From fe89c906e5a8d6d5e9140226866d315e97d3bee3 Mon Sep 17 00:00:00 2001
|
|
|
75a40aa |
From: Ray Strode <rstrode@redhat.com>
|
|
|
75a40aa |
Date: Sat, 5 May 2012 22:49:54 -0400
|
|
|
75a40aa |
Subject: [PATCH] daemon: don't freak out if greeter dies after login finishes
|
|
|
75a40aa |
|
|
|
75a40aa |
If we've already logged a user in and the greeter is shutting
|
|
|
75a40aa |
down and crashes, we should just ignore the crash and continue
|
|
|
75a40aa |
with the login process.
|
|
|
75a40aa |
|
|
|
75a40aa |
Furthermore, if we explicitly kill the greeter and it dies with
|
|
|
75a40aa |
a TERM signal, then we definitely don't want to treat that as
|
|
|
75a40aa |
if it was a crash.
|
|
|
75a40aa |
---
|
|
|
75a40aa |
daemon/gdm-simple-slave.c | 4 +++-
|
|
|
75a40aa |
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
75a40aa |
|
|
|
75a40aa |
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
|
|
|
75a40aa |
index 7c709a6..bf48246 100644
|
|
|
75a40aa |
--- a/daemon/gdm-simple-slave.c
|
|
|
75a40aa |
+++ b/daemon/gdm-simple-slave.c
|
|
|
75a40aa |
@@ -1032,7 +1032,9 @@ on_greeter_session_died (GdmGreeterSession *greeter,
|
|
|
75a40aa |
GdmSimpleSlave *slave)
|
|
|
75a40aa |
{
|
|
|
75a40aa |
g_debug ("GdmSimpleSlave: Greeter died: %d", signal);
|
|
|
75a40aa |
- gdm_slave_stopped (GDM_SLAVE (slave));
|
|
|
75a40aa |
+ if (slave->priv->start_session_service_name == NULL) {
|
|
|
75a40aa |
+ gdm_slave_stopped (GDM_SLAVE (slave));
|
|
|
75a40aa |
+ }
|
|
|
75a40aa |
}
|
|
|
75a40aa |
|
|
|
75a40aa |
static void
|
|
|
75a40aa |
--
|
|
|
75a40aa |
1.7.10
|
|
|
75a40aa |
|