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