103 lines
4.1 KiB
Diff
103 lines
4.1 KiB
Diff
From 27c78eb4efc598281eed9cd521ba1b05ee08e3d2 Mon Sep 17 00:00:00 2001
|
|
From: Ray Strode <rstrode@redhat.com>
|
|
Date: Mon, 22 Jul 2024 14:59:43 -0400
|
|
Subject: [PATCH 2/3] manager: Quit plymouth at first sign of failure
|
|
|
|
Rather than quit plymouth after a replacement X server is already
|
|
started, this commit does it a bit earlier, so there is a battle
|
|
of display servers.
|
|
---
|
|
common/gdm-address.c | 4 ++--
|
|
daemon/gdm-manager.c | 5 +++++
|
|
daemon/gdm-xdmcp-display-factory.c | 10 ++++++----
|
|
3 files changed, 13 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/common/gdm-address.c b/common/gdm-address.c
|
|
index a8b73e2..3a507d0 100644
|
|
--- a/common/gdm-address.c
|
|
+++ b/common/gdm-address.c
|
|
@@ -134,7 +134,7 @@ gdm_address_get_sockaddr_storage (GdmAddress *address)
|
|
g_return_val_if_fail (address != NULL, NULL);
|
|
g_return_val_if_fail (address->ss != NULL, NULL);
|
|
|
|
- ss = g_memdup (address->ss, sizeof (struct sockaddr_storage));
|
|
+ ss = g_memdup2 (address->ss, sizeof (struct sockaddr_storage));
|
|
|
|
return ss;
|
|
}
|
|
@@ -529,7 +529,7 @@ gdm_address_copy (GdmAddress *address)
|
|
g_return_val_if_fail (address != NULL, NULL);
|
|
|
|
addr = g_new0 (GdmAddress, 1);
|
|
- addr->ss = g_memdup (address->ss, sizeof (struct sockaddr_storage));
|
|
+ addr->ss = g_memdup2 (address->ss, sizeof (struct sockaddr_storage));
|
|
|
|
return addr;
|
|
}
|
|
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
|
|
index 7a68d52..23734e8 100644
|
|
--- a/daemon/gdm-manager.c
|
|
+++ b/daemon/gdm-manager.c
|
|
@@ -1545,6 +1545,8 @@ on_display_status_changed (GdmDisplay *display,
|
|
g_free (session_class);
|
|
}
|
|
break;
|
|
+
|
|
+ case GDM_DISPLAY_FAILING:
|
|
case GDM_DISPLAY_FAILED:
|
|
case GDM_DISPLAY_UNMANAGED:
|
|
case GDM_DISPLAY_FINISHED:
|
|
@@ -1555,6 +1557,9 @@ on_display_status_changed (GdmDisplay *display,
|
|
}
|
|
#endif
|
|
|
|
+ if (status == GDM_DISPLAY_FAILING)
|
|
+ break;
|
|
+
|
|
g_object_set_data (G_OBJECT (display), "gdm-user-session", NULL);
|
|
|
|
if (display == manager->priv->automatic_login_display) {
|
|
diff --git a/daemon/gdm-xdmcp-display-factory.c b/daemon/gdm-xdmcp-display-factory.c
|
|
index abb58fa..e82cfe1 100644
|
|
--- a/daemon/gdm-xdmcp-display-factory.c
|
|
+++ b/daemon/gdm-xdmcp-display-factory.c
|
|
@@ -918,10 +918,10 @@ set_port_for_request (GdmAddress *address,
|
|
|
|
switch (ss->ss_family) {
|
|
case AF_INET:
|
|
- port->data = (CARD8 *)g_memdup (&(SIN (ss)->sin_port), port->length);
|
|
+ port->data = (CARD8 *)g_memdup2 (&(SIN (ss)->sin_port), port->length);
|
|
break;
|
|
case AF_INET6:
|
|
- port->data = (CARD8 *)g_memdup (&(SIN6 (ss)->sin6_port), port->length);
|
|
+ port->data = (CARD8 *)g_memdup2 (&(SIN6 (ss)->sin6_port), port->length);
|
|
break;
|
|
default:
|
|
port->data = NULL;
|
|
@@ -940,11 +940,11 @@ set_address_for_request (GdmAddress *address,
|
|
switch (ss->ss_family) {
|
|
case AF_INET:
|
|
addr->length = sizeof (struct in_addr);
|
|
- addr->data = g_memdup (&SIN (ss)->sin_addr, addr->length);
|
|
+ addr->data = g_memdup2 (&SIN (ss)->sin_addr, addr->length);
|
|
break;
|
|
case AF_INET6:
|
|
addr->length = sizeof (struct in6_addr);
|
|
- addr->data = g_memdup (&SIN6 (ss)->sin6_addr, addr->length);
|
|
+ addr->data = g_memdup2 (&SIN6 (ss)->sin6_addr, addr->length);
|
|
break;
|
|
default:
|
|
addr->length = 0;
|
|
@@ -2090,6 +2090,8 @@ on_display_status_changed (GdmDisplay *display,
|
|
|
|
gdm_display_factory_queue_purge_displays (GDM_DISPLAY_FACTORY (factory));
|
|
break;
|
|
+ case GDM_DISPLAY_FAILING:
|
|
+ break;
|
|
case GDM_DISPLAY_FAILED:
|
|
gdm_display_factory_queue_purge_displays (GDM_DISPLAY_FACTORY (factory));
|
|
break;
|
|
--
|
|
2.44.0
|
|
|