Projects
openEuler:22.03:LTS:LoongArch
xorg-x11-xtrans-devel
_service:tar_scm_kernel_repo:backport-0001-Auto...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm_kernel_repo:backport-0001-Automatically-disable-inet6-transport-if-ipv6-is-dis.patch of Package xorg-x11-xtrans-devel
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
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.