summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2012-07-09 21:33:10 -0400
committerRay Strode <rstrode@redhat.com>2012-07-17 03:29:08 -0400
commit0492089ed0b40b7eb04345598d0a27752456c33a (patch)
treea57a70c1c82aef977e963987e146e272d5370d6b
parent44f40ffc9288867d05b0d98595098b0eac6d31e7 (diff)
downloadgdm-0492089ed0b40b7eb04345598d0a27752456c33a.tar.gz
worker: propagate 'is local' to session worker
It's needed by ConsoleKit and it will be needed for starting reauthentication sessions.
-rw-r--r--daemon/gdm-session-worker.c21
-rw-r--r--daemon/gdm-session.c7
-rw-r--r--daemon/gdm-session.xml3
3 files changed, 18 insertions, 13 deletions
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index bbe78079..f7516066 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -133,6 +133,7 @@ struct GdmSessionWorkerPrivate
guint32 cancelled : 1;
guint32 timed_out : 1;
guint32 is_program_session : 1;
+ guint32 display_is_local : 1;
guint state_change_idle_id;
char *server_address;
@@ -193,7 +194,6 @@ open_ck_session (GdmSessionWorker *worker)
const char *display_hostname;
const char *session_type;
gint32 uid;
- gboolean is_local;
g_assert (worker->priv->session_cookie == NULL);
@@ -221,15 +221,6 @@ open_ck_session (GdmSessionWorker *worker)
g_assert (worker->priv->username != NULL);
- /* FIXME: this isn't very good */
- if (display_hostname == NULL
- || display_hostname[0] == '\0'
- || strcmp (display_hostname, "localhost") == 0) {
- is_local = TRUE;
- } else {
- is_local = FALSE;
- }
-
gdm_get_pwent_for_name (worker->priv->username, &pwent);
if (pwent == NULL) {
goto out;
@@ -253,7 +244,7 @@ open_ck_session (GdmSessionWorker *worker)
g_variant_builder_add_parsed (&builder, "('display-device', <%s>)", display_device);
g_variant_builder_add_parsed (&builder, "('x11-display', <%s>)", display_name);
g_variant_builder_add_parsed (&builder, "('remote-host-name', <%s>)", display_hostname);
- g_variant_builder_add_parsed (&builder, "('is-local', <%b>)", is_local);
+ g_variant_builder_add_parsed (&builder, "('is-local', <%b>)", worker->priv->display_is_local);
g_variant_builder_add_parsed (&builder, "('session-type', <%s>)", session_type);
parameters = g_variant_builder_end (&builder);
@@ -986,6 +977,7 @@ gdm_session_worker_initialize_pam (GdmSessionWorker *worker,
const char *service,
const char *username,
const char *hostname,
+ gboolean display_is_local,
const char *x11_display_name,
const char *x11_authority_file,
const char *display_device,
@@ -2045,6 +2037,7 @@ do_setup (GdmSessionWorker *worker)
worker->priv->service,
worker->priv->username,
worker->priv->hostname,
+ worker->priv->display_is_local,
worker->priv->x11_display_name,
worker->priv->x11_authority_file,
worker->priv->display_device,
@@ -2422,6 +2415,7 @@ on_setup (GdmDBusWorkerManager *proxy,
const char *console,
const char *seat_id,
const char *hostname,
+ gboolean display_is_local,
GdmSessionWorker *worker)
{
if (worker->priv->state != GDM_SESSION_WORKER_STATE_NONE) {
@@ -2435,6 +2429,7 @@ on_setup (GdmDBusWorkerManager *proxy,
worker->priv->display_device = g_strdup (console);
worker->priv->display_seat_id = g_strdup (seat_id);
worker->priv->hostname = g_strdup (hostname);
+ worker->priv->display_is_local = display_is_local;
worker->priv->username = NULL;
g_debug ("GdmSessionWorker: queuing setup: %s %s", service, console);
@@ -2450,6 +2445,7 @@ on_setup_for_user (GdmDBusWorkerManager *proxy,
const char *console,
const char *seat_id,
const char *hostname,
+ gboolean display_is_local,
GdmSessionWorker *worker)
{
if (worker->priv->state != GDM_SESSION_WORKER_STATE_NONE) {
@@ -2463,6 +2459,7 @@ on_setup_for_user (GdmDBusWorkerManager *proxy,
worker->priv->display_device = g_strdup (console);
worker->priv->display_seat_id = g_strdup (seat_id);
worker->priv->hostname = g_strdup (hostname);
+ worker->priv->display_is_local = display_is_local;
worker->priv->username = g_strdup (username);
g_signal_connect_swapped (worker->priv->user_settings,
@@ -2496,6 +2493,7 @@ on_setup_for_program (GdmDBusWorkerManager *proxy,
const char *console,
const char *seat_id,
const char *hostname,
+ gboolean display_is_local,
const char *log_file,
GdmSessionWorker *worker)
{
@@ -2510,6 +2508,7 @@ on_setup_for_program (GdmDBusWorkerManager *proxy,
worker->priv->display_device = g_strdup (console);
worker->priv->display_seat_id = g_strdup (seat_id);
worker->priv->hostname = g_strdup (hostname);
+ worker->priv->display_is_local = display_is_local;
worker->priv->username = g_strdup (GDM_USERNAME);
worker->priv->log_file = g_strdup (log_file);
worker->priv->is_program_session = TRUE;
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index 8d337b2f..aab06b6e 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -1988,7 +1988,8 @@ send_setup (GdmSession *self,
display_x11_authority_file,
display_device,
display_seat_id,
- display_hostname);
+ display_hostname,
+ self->priv->display_is_local);
}
}
@@ -2049,7 +2050,8 @@ send_setup_for_user (GdmSession *self,
display_x11_authority_file,
display_device,
display_seat_id,
- display_hostname);
+ display_hostname,
+ self->priv->display_is_local);
}
}
@@ -2104,6 +2106,7 @@ send_setup_for_program (GdmSession *self,
display_device,
display_seat_id,
display_hostname,
+ self->priv->display_is_local,
log_file);
}
}
diff --git a/daemon/gdm-session.xml b/daemon/gdm-session.xml
index 292d4165..ad20adf6 100644
--- a/daemon/gdm-session.xml
+++ b/daemon/gdm-session.xml
@@ -106,6 +106,7 @@
<arg name="display_device" type="s"/>
<arg name="display_seat" type="s"/>
<arg name="hostname" type="s"/>
+ <arg name="display_is_local" type="b"/>
</signal>
<signal name="SetupForUser">
<arg name="service_name" type="s"/>
@@ -115,6 +116,7 @@
<arg name="display_device" type="s"/>
<arg name="display_seat" type="s"/>
<arg name="hostname" type="s"/>
+ <arg name="display_is_local" type="b"/>
</signal>
<signal name="SetupForProgram">
<arg name="service_name" type="s"/>
@@ -123,6 +125,7 @@
<arg name="display_device" type="s"/>
<arg name="display_seat" type="s"/>
<arg name="hostname" type="s"/>
+ <arg name="display_is_local" type="b"/>
<arg name="log_file" type="s"/>
</signal>
<signal name="Authenticate">