!7 Automatically disable inet6 transport if ipv6 is disabled on machine
From: @meng-wenhua Reviewed-by: @Charlie_li Signed-off-by: @Charlie_li
This commit is contained in:
commit
33a0a8948d
@ -0,0 +1,59 @@
|
||||
From 7898badde44cf518da6879c2622b6db9cd709c7d Mon Sep 17 00:00:00 2001
|
||||
From: Ray Strode <rstrode@redhat.com>
|
||||
Date: Fri, 6 May 2022 14:23:59 -0400
|
||||
Subject: [PATCH] Automatically disable inet6 transport if ipv6 is disabled on
|
||||
machine
|
||||
|
||||
If a machine is booted with ipv6.disable=1, trying to bind to an
|
||||
AF_INET6 socket will fail with AFNOSUPPORT.
|
||||
|
||||
The tcp transport automatically falls back to ipv4 in this case, but
|
||||
the more specific inet6 transport just fails.
|
||||
|
||||
This failure leads to MakeAllCOTSServerListeners returning a partial
|
||||
success.
|
||||
|
||||
Unfortunately, the X server can't really contiue with partial successes
|
||||
from this function if -displayfd is in use, since that would, in other
|
||||
cases, potentially lead to the -displayfd electing a display number that
|
||||
is potentially partially in use by a rogue program.
|
||||
|
||||
This commit addresses the issue by automatically disabling transports
|
||||
when they fail with AFNOSUPPORT, leading them to get ignored, rather than
|
||||
proceeding and ultimately returning from MakeAllCOTSServerListerns with
|
||||
partial=TRUE.
|
||||
---
|
||||
Xtranssock.c | 15 +++++++++++----
|
||||
1 file changed, 11 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Xtranssock.c b/Xtranssock.c
|
||||
index 632c1b5..0177186 100644
|
||||
--- a/Xtranssock.c
|
||||
+++ b/Xtranssock.c
|
||||
@@ -611,12 +611,19 @@ TRANS(SocketOpenCOTSServer) (Xtransport *thistrans, const char *protocol,
|
||||
break;
|
||||
}
|
||||
if (i < 0) {
|
||||
- if (i == -1)
|
||||
- prmsg (1,"SocketOpenCOTSServer: Unable to open socket for %s\n",
|
||||
- thistrans->TransName);
|
||||
- else
|
||||
+ if (i == -1) {
|
||||
+ if (errno == EAFNOSUPPORT) {
|
||||
+ thistrans->flags |= TRANS_NOLISTEN;
|
||||
+ prmsg (1,"SocketOpenCOTSServer: Socket for %s unsupported on this system.\n",
|
||||
+ thistrans->TransName);
|
||||
+ } else {
|
||||
+ prmsg (1,"SocketOpenCOTSServer: Unable to open socket for %s\n",
|
||||
+ thistrans->TransName);
|
||||
+ }
|
||||
+ } else {
|
||||
prmsg (1,"SocketOpenCOTSServer: Unable to determine socket type for %s\n",
|
||||
thistrans->TransName);
|
||||
+ }
|
||||
return NULL;
|
||||
}
|
||||
|
||||
--
|
||||
2.37.3.windows.1
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Name: xorg-x11-xtrans-devel
|
||||
Version: 1.4.0
|
||||
Release: 1
|
||||
Release: 2
|
||||
Summary: X.Org X11 developmental X transport library
|
||||
License: MIT
|
||||
URL: http://www.x.org
|
||||
@ -12,6 +12,8 @@ BuildRequires: xorg-x11-util-macros
|
||||
|
||||
Patch1: xtrans-1.0.3-avoid-gethostname.patch
|
||||
|
||||
Patch6000: backport-0001-Automatically-disable-inet6-transport-if-ipv6-is-dis.patch
|
||||
|
||||
%description
|
||||
xtrans is a library of code that is shared among various X packages to
|
||||
handle network protocol transport in a modular fashion, allowing a
|
||||
@ -47,6 +49,9 @@ install -pm 644 AUTHORS ChangeLog COPYING README.md $RPM_BUILD_ROOT%{_pkgdocdir}
|
||||
%{_datadir}/pkgconfig/xtrans.pc
|
||||
|
||||
%changelog
|
||||
* Mon Jan 9 2023 mengwenhua <mengwenhua@xfusion.com> - 1.4.0-2
|
||||
- Automatically disable inet6 transport if ipv6 is disabled on machine
|
||||
|
||||
* Wed Jan 12 2022 yaoxin <yaoxin30@huawei.com> - 1.4.0-1
|
||||
- Upgrade xorg-x11-xtrans-devel to 1.4.0
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user