[gdm/wip/slave-connection: 28/30] worker: fix consolekit session id
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm/wip/slave-connection: 28/30] worker: fix consolekit session id
- Date: Mon, 9 Jul 2012 07:53:29 +0000 (UTC)
commit 638deff6d8d92ad73b5ca0de7530c44e6f4eed30
Author: Ray Strode <rstrode redhat com>
Date: Sun Jul 8 21:57:40 2012 -0400
worker: fix consolekit session id
daemon/gdm-session-worker.c | 53 ++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 52 insertions(+), 1 deletions(-)
---
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index 7a956cc..20f09a9 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -338,6 +338,51 @@ out:
g_clear_pointer (&worker->priv->session_cookie,
(GDestroyNotify) g_free);
}
+
+static char *
+get_ck_session_id (GdmSessionWorker *worker)
+{
+ GDBusConnection *system_bus;
+ GVariant *reply;
+ GError *error = NULL;
+ char *session_id = NULL;
+
+ error = NULL;
+ system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+
+ if (system_bus == NULL) {
+ g_warning ("Couldn't create connection to system bus: %s",
+ error->message);
+
+ g_error_free (error);
+ goto out;
+ }
+
+ reply = g_dbus_connection_call_sync (system_bus,
+ "org.freedesktop.ConsoleKit",
+ "/org/freedesktop/ConsoleKit/Manager",
+ "org.freedesktop.ConsoleKit.Manager",
+ "GetCurrentSession",
+ NULL,
+ G_VARIANT_TYPE ("(o)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
+
+ if (reply == NULL) {
+ g_warning ("%s", error->message);
+ g_clear_error (&error);
+ goto out;
+ }
+
+ g_variant_get (reply, "(o)", &session_id);
+
+ g_variant_unref (reply);
+
+out:
+ return session_id;
+}
#endif
/* adapted from glib script_execute */
@@ -1813,7 +1858,7 @@ gdm_session_worker_open_session (GdmSessionWorker *worker,
{
int error_code;
int flags;
- const char *session_id;
+ char *session_id;
g_assert (worker->priv->state == GDM_SESSION_WORKER_STATE_ACCOUNT_DETAILS_SAVED);
g_assert (geteuid () == 0);
@@ -1844,6 +1889,12 @@ gdm_session_worker_open_session (GdmSessionWorker *worker,
worker->priv->session_id = session_id;
}
+#ifdef WITH_CONSOLE_KIT
+ if (session_id == NULL) {
+ session_id = get_ck_session_id (worker);
+ }
+#endif
+
out:
if (error_code != PAM_SUCCESS) {
gdm_session_worker_uninitialize_pam (worker, error_code);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]