Blame SOURCES/0009-xdmcp-display-factory-explicitly-stop-greeter-sessio.patch

2fc437
From 1dc72abeb4419027f649d67fd95b302c8233335d Mon Sep 17 00:00:00 2001
2fc437
From: Ray Strode <rstrode@redhat.com>
2fc437
Date: Fri, 31 Mar 2017 14:59:05 -0400
2fc437
Subject: [PATCH 09/13] xdmcp-display-factory: explicitly stop greeter session
2fc437
 on disconnect
2fc437
2fc437
If the client disconnects, we should kill off the necessary processes.
2fc437
---
2fc437
 daemon/gdm-xdmcp-display-factory.c | 1 +
2fc437
 1 file changed, 1 insertion(+)
2fc437
2fc437
diff --git a/daemon/gdm-xdmcp-display-factory.c b/daemon/gdm-xdmcp-display-factory.c
2fc437
index c5f7ddb4..3a8506ce 100644
2fc437
--- a/daemon/gdm-xdmcp-display-factory.c
2fc437
+++ b/daemon/gdm-xdmcp-display-factory.c
2fc437
@@ -2029,60 +2029,61 @@ on_hostname_selected (GdmXdmcpChooserDisplay *display,
2fc437
                 g_warning ("Unable to get address: %s", gai_strerror (gaierr));
2fc437
                 g_free (xdmcp_port);
2fc437
                 return;
2fc437
         }
2fc437
         g_free (xdmcp_port);
2fc437
 
2fc437
         /* just take the first one */
2fc437
         ai = ai_list;
2fc437
 
2fc437
         if (ai != NULL) {
2fc437
                 char *ip;
2fc437
                 ic->chosen_address = gdm_address_new_from_sockaddr (ai->ai_addr, ai->ai_addrlen);
2fc437
 
2fc437
                 ip = NULL;
2fc437
                 gdm_address_get_numeric_info (ic->chosen_address, &ip, NULL);
2fc437
                 g_debug ("GdmXdmcpDisplayFactory: hostname resolves to %s",
2fc437
                         ip ? ip : "(null)");
2fc437
                 g_free (ip);
2fc437
         }
2fc437
 
2fc437
         freeaddrinfo (ai_list);
2fc437
 }
2fc437
 
2fc437
 static void
2fc437
 on_client_disconnected (GdmSession *session,
2fc437
                         GdmDisplay *display)
2fc437
 {
2fc437
         if (gdm_display_get_status (display) != GDM_DISPLAY_MANAGED)
2fc437
                 return;
2fc437
 
2fc437
+        gdm_display_stop_greeter_session (display);
2fc437
         gdm_display_unmanage (display);
2fc437
         gdm_display_finish (display);
2fc437
 }
2fc437
 
2fc437
 static void
2fc437
 on_display_status_changed (GdmDisplay             *display,
2fc437
                            GParamSpec             *arg1,
2fc437
                            GdmXdmcpDisplayFactory *factory)
2fc437
 {
2fc437
         int              status;
2fc437
         GdmDisplayStore *store;
2fc437
         GdmLaunchEnvironment *launch_environment;
2fc437
         GdmSession *session;
2fc437
         GdmAddress *address;
2fc437
         gint32  session_number;
2fc437
         int display_number;
2fc437
 
2fc437
         store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
2fc437
 
2fc437
         launch_environment = NULL;
2fc437
         g_object_get (display, "launch-environment", &launch_environment, NULL);
2fc437
 
2fc437
         session = NULL;
2fc437
         if (launch_environment != NULL) {
2fc437
                 session = gdm_launch_environment_get_session (launch_environment);
2fc437
         }
2fc437
 
2fc437
         status = gdm_display_get_status (display);
2fc437
 
2fc437
         g_debug ("GdmXdmcpDisplayFactory: xdmcp display status changed: %d", status);
2fc437
-- 
2fc437
2.12.0
2fc437