* Mon Oct 15 2007 Adam Jackson <ajax@redhat.com> 1.3.0.0-31.jx
- xserver-1.3.0-late-sigusr1.patch: Test, move kill(getppid(), SIGUSR1) as late as possible.
This commit is contained in:
parent
18807aa01a
commit
38f17a6524
@ -9,7 +9,7 @@
|
||||
Summary: X.Org X11 X server
|
||||
Name: xorg-x11-server
|
||||
Version: 1.3.0.0
|
||||
Release: 31%{?dist}
|
||||
Release: 32%{?dist}
|
||||
URL: http://www.x.org
|
||||
License: MIT
|
||||
Group: User Interface/X
|
||||
@ -83,6 +83,8 @@ Patch2503: xserver-1.3.0-rom-search.patch
|
||||
Patch2504: xserver-1.3.0-domain-obiwan.patch
|
||||
Patch2505: xserver-1.3.0-pci-device-enable.patch
|
||||
|
||||
Patch9999: xserver-1.3.0-late-sigusr1.patch
|
||||
|
||||
%define moduledir %{_libdir}/xorg/modules
|
||||
%define drimoduledir %{_libdir}/dri
|
||||
%define sdkdir %{_includedir}/xorg
|
||||
@ -345,6 +347,8 @@ Xserver source code needed to build VNC server (Xvnc)
|
||||
%patch2504 -p1 -b .domain-obiwan
|
||||
%patch2505 -p1 -b .device-enable
|
||||
|
||||
%patch9999 -p1 -b .jx
|
||||
|
||||
%build
|
||||
|
||||
%if %{fedora} == 7
|
||||
@ -612,6 +616,10 @@ rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Oct 15 2007 Adam Jackson <ajax@redhat.com> 1.3.0.0-31.jx
|
||||
- xserver-1.3.0-late-sigusr1.patch: Test, move kill(getppid(), SIGUSR1)
|
||||
as late as possible.
|
||||
|
||||
* Fri Oct 12 2007 Adam Jackson <ajax@redhat.com> 1.3.0.0-31
|
||||
- xorg-x11-server-Red-Hat-extramodes.patch: Remove 2560x1600 GTF timing.
|
||||
|
||||
|
152
xserver-1.3.0-late-sigusr1.patch
Normal file
152
xserver-1.3.0-late-sigusr1.patch
Normal file
@ -0,0 +1,152 @@
|
||||
diff -up xorg-server-1.3.0.0/dix/main.c.jx xorg-server-1.3.0.0/dix/main.c
|
||||
--- xorg-server-1.3.0.0/dix/main.c.jx 2006-11-16 13:01:23.000000000 -0500
|
||||
+++ xorg-server-1.3.0.0/dix/main.c 2007-10-15 14:37:13.000000000 -0400
|
||||
@@ -442,6 +442,8 @@ main(int argc, char *argv[], char *envp[
|
||||
FatalError("could not create connection block info");
|
||||
}
|
||||
|
||||
+ NotifyParentProcess();
|
||||
+
|
||||
Dispatch();
|
||||
|
||||
/* Now free up whatever must be freed */
|
||||
diff -up xorg-server-1.3.0.0/include/os.h.jx xorg-server-1.3.0.0/include/os.h
|
||||
--- xorg-server-1.3.0.0/include/os.h.jx 2007-02-16 11:03:12.000000000 -0500
|
||||
+++ xorg-server-1.3.0.0/include/os.h 2007-10-15 14:37:13.000000000 -0400
|
||||
@@ -124,6 +124,8 @@ extern void ResetOsBuffers(void);
|
||||
|
||||
extern void InitConnectionLimits(void);
|
||||
|
||||
+extern void NotifyParentProcess(void);
|
||||
+
|
||||
extern void CreateWellKnownSockets(void);
|
||||
|
||||
extern void ResetWellKnownSockets(void);
|
||||
diff -up xorg-server-1.3.0.0/os/connection.c.jx xorg-server-1.3.0.0/os/connection.c
|
||||
--- xorg-server-1.3.0.0/os/connection.c.jx 2007-02-17 20:37:56.000000000 -0500
|
||||
+++ xorg-server-1.3.0.0/os/connection.c 2007-10-15 14:42:19.000000000 -0400
|
||||
@@ -370,6 +370,52 @@ InitConnectionLimits(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * If SIGUSR1 was set to SIG_IGN when the server started, assume that either
|
||||
+ *
|
||||
+ * a- The parent process is ignoring SIGUSR1
|
||||
+ *
|
||||
+ * or
|
||||
+ *
|
||||
+ * b- The parent process is expecting a SIGUSR1
|
||||
+ * when the server is ready to accept connections
|
||||
+ *
|
||||
+ * In the first case, the signal will be harmless, in the second case,
|
||||
+ * the signal will be quite useful.
|
||||
+ */
|
||||
+static void
|
||||
+InitParentProcess(void)
|
||||
+{
|
||||
+#if !defined(WIN32)
|
||||
+ OsSigHandlerPtr handler;
|
||||
+ handler = OsSignal (SIGUSR1, SIG_IGN);
|
||||
+ if ( handler == SIG_IGN)
|
||||
+ RunFromSmartParent = TRUE;
|
||||
+ OsSignal(SIGUSR1, handler);
|
||||
+ ParentProcess = getppid ();
|
||||
+#ifdef __UNIXOS2__
|
||||
+ /*
|
||||
+ * fg030505: under OS/2, xinit is not the parent process but
|
||||
+ * the "grant parent" process of the server because execvpe()
|
||||
+ * presents us an additional process number;
|
||||
+ * GetPPID(pid) is part of libemxfix
|
||||
+ */
|
||||
+ ParentProcess = GetPPID (ParentProcess);
|
||||
+#endif /* __UNIXOS2__ */
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+NotifyParentProcess(void)
|
||||
+{
|
||||
+#if !defined(WIN32)
|
||||
+ if (RunFromSmartParent) {
|
||||
+ if (ParentProcess > 1) {
|
||||
+ kill (ParentProcess, SIGUSR1);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+}
|
||||
|
||||
/*****************
|
||||
* CreateWellKnownSockets
|
||||
@@ -382,7 +428,6 @@ CreateWellKnownSockets(void)
|
||||
int i;
|
||||
int partial;
|
||||
char port[20];
|
||||
- OsSigHandlerPtr handler;
|
||||
|
||||
FD_ZERO(&AllSockets);
|
||||
FD_ZERO(&AllClients);
|
||||
@@ -436,42 +481,9 @@ CreateWellKnownSockets(void)
|
||||
OsSignal (SIGTERM, GiveUp);
|
||||
XFD_COPYSET (&WellKnownConnections, &AllSockets);
|
||||
ResetHosts(display);
|
||||
- /*
|
||||
- * Magic: If SIGUSR1 was set to SIG_IGN when
|
||||
- * the server started, assume that either
|
||||
- *
|
||||
- * a- The parent process is ignoring SIGUSR1
|
||||
- *
|
||||
- * or
|
||||
- *
|
||||
- * b- The parent process is expecting a SIGUSR1
|
||||
- * when the server is ready to accept connections
|
||||
- *
|
||||
- * In the first case, the signal will be harmless,
|
||||
- * in the second case, the signal will be quite
|
||||
- * useful
|
||||
- */
|
||||
-#if !defined(WIN32)
|
||||
- handler = OsSignal (SIGUSR1, SIG_IGN);
|
||||
- if ( handler == SIG_IGN)
|
||||
- RunFromSmartParent = TRUE;
|
||||
- OsSignal(SIGUSR1, handler);
|
||||
- ParentProcess = getppid ();
|
||||
-#ifdef __UNIXOS2__
|
||||
- /*
|
||||
- * fg030505: under OS/2, xinit is not the parent process but
|
||||
- * the "grant parent" process of the server because execvpe()
|
||||
- * presents us an additional process number;
|
||||
- * GetPPID(pid) is part of libemxfix
|
||||
- */
|
||||
- ParentProcess = GetPPID (ParentProcess);
|
||||
-#endif /* __UNIXOS2__ */
|
||||
- if (RunFromSmartParent) {
|
||||
- if (ParentProcess > 1) {
|
||||
- kill (ParentProcess, SIGUSR1);
|
||||
- }
|
||||
- }
|
||||
-#endif
|
||||
+
|
||||
+ InitParentProcess();
|
||||
+
|
||||
#ifdef XDMCP
|
||||
XdmcpInit ();
|
||||
#endif
|
||||
@@ -520,16 +532,7 @@ ResetWellKnownSockets (void)
|
||||
|
||||
ResetAuthorization ();
|
||||
ResetHosts(display);
|
||||
- /*
|
||||
- * See above in CreateWellKnownSockets about SIGUSR1
|
||||
- */
|
||||
-#if !defined(WIN32)
|
||||
- if (RunFromSmartParent) {
|
||||
- if (ParentProcess > 1) {
|
||||
- kill (ParentProcess, SIGUSR1);
|
||||
- }
|
||||
- }
|
||||
-#endif
|
||||
+
|
||||
/*
|
||||
* restart XDMCP
|
||||
*/
|
Loading…
Reference in New Issue
Block a user