diff --git a/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch b/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch index f514073..184f163 100644 --- a/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch +++ b/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch @@ -181,34 +181,7 @@ index e1bc62d7..08c3cc17 100644 { const char *username; char *display_name, *hostname, *display_device, *display_seat_id; -@@ -1096,92 +1109,114 @@ open_temporary_reauthentication_channel (GdmManager *self, - g_signal_connect (session, - "client-disconnected", - G_CALLBACK (on_reauthentication_client_disconnected), - self); - g_signal_connect (session, - "client-rejected", - G_CALLBACK (on_reauthentication_client_rejected), - self); - g_signal_connect (session, - "cancelled", - G_CALLBACK (on_reauthentication_cancelled), - self); - g_signal_connect (session, - "conversation-started", - G_CALLBACK (on_reauthentication_conversation_started), - self); - g_signal_connect (session, - "conversation-stopped", - G_CALLBACK (on_reauthentication_conversation_stopped), - self); - g_signal_connect (session, - "verification-complete", - G_CALLBACK (on_reauthentication_verification_complete), - self); - - address = gdm_session_get_server_address (session); - +@@ -1129,6 +1142,21 @@ open_temporary_reauthentication_channel (GdmManager *self, return g_strdup (address); } @@ -225,36 +198,12 @@ index e1bc62d7..08c3cc17 100644 + + return enabled; +} ++ + static gboolean - gdm_manager_handle_open_reauthentication_channel (GdmDBusManager *manager, - GDBusMethodInvocation *invocation, - const char *username) + is_session_graphical (const char *session_id) { - GdmManager *self = GDM_MANAGER (manager); - const char *sender; - GdmDisplay *display = NULL; - GdmSession *session; - GDBusConnection *connection; - char *seat_id = NULL; - char *session_id = NULL; - GPid pid = 0; - uid_t uid = (uid_t) -1; - gboolean is_login_screen = FALSE; - gboolean is_remote = FALSE; - - g_debug ("GdmManager: trying to open reauthentication channel for user %s", username); - - sender = g_dbus_method_invocation_get_sender (invocation); - connection = g_dbus_method_invocation_get_connection (invocation); - get_display_and_details_for_bus_sender (self, connection, sender, &display, &seat_id, &session_id, NULL, &pid, &uid, &is_login_screen, &is_remote); - - if (session_id == NULL || pid == 0 || uid == (uid_t) -1) { - g_dbus_method_invocation_return_error_literal (invocation, - G_DBUS_ERROR, - G_DBUS_ERROR_ACCESS_DENIED, - _("No session available")); - +@@ -1237,6 +1265,14 @@ gdm_manager_handle_open_reauthentication_channel (GdmDBusManager *manager return TRUE; } @@ -269,33 +218,6 @@ index e1bc62d7..08c3cc17 100644 if (is_login_screen) { g_debug ("GdmManager: looking for login screen session for user %s on seat %s", username, seat_id); session = find_session_for_user_on_seat (self, - username, - seat_id, - NULL); - } else { - g_debug ("GdmManager: looking for user session on display"); - session = get_user_session_for_display (display); - } - - if (session != NULL && gdm_session_is_running (session)) { - gdm_session_start_reauthentication (session, pid, uid); - g_hash_table_insert (self->priv->open_reauthentication_requests, - GINT_TO_POINTER (pid), - invocation); - } else if (is_login_screen) { - g_dbus_method_invocation_return_error_literal (invocation, - G_DBUS_ERROR, - G_DBUS_ERROR_ACCESS_DENIED, - "Login screen only allowed to open reauthentication channels for running sessions"); - return TRUE; - } else { - char *address; - address = open_temporary_reauthentication_channel (self, - seat_id, - session_id, - pid, - uid, - is_remote); diff --git a/data/gdm.schemas.in b/data/gdm.schemas.in index a1035f95..929d13d9 100644 --- a/data/gdm.schemas.in