From c6422207156a33edaf2d8dd72a37ef2d7ce7e966 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 25 Mar 2008 15:13:23 +0000 Subject: xtrans: Add patch from upstream to fix abstract socket handling git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4113 311d38ba-8fff-0310-9ca6-ca027cbcb966 --- meta/packages/xorg-lib/xtrans-native_1.1.bb | 2 - meta/packages/xorg-lib/xtrans-sdk_1.1.bb | 2 - .../xorg-lib/xtrans/abstract_socket_fix.patch | 58 ++++++++++++++++++++++ meta/packages/xorg-lib/xtrans_1.1.bb | 6 ++- 4 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 meta/packages/xorg-lib/xtrans/abstract_socket_fix.patch (limited to 'meta') diff --git a/meta/packages/xorg-lib/xtrans-native_1.1.bb b/meta/packages/xorg-lib/xtrans-native_1.1.bb index 793f1e4951..c7988c7264 100644 --- a/meta/packages/xorg-lib/xtrans-native_1.1.bb +++ b/meta/packages/xorg-lib/xtrans-native_1.1.bb @@ -2,6 +2,4 @@ require xtrans_${PV}.bb DEPENDS = "util-macros-native" -SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.bz2" - inherit native diff --git a/meta/packages/xorg-lib/xtrans-sdk_1.1.bb b/meta/packages/xorg-lib/xtrans-sdk_1.1.bb index e018a64220..9f671180b2 100644 --- a/meta/packages/xorg-lib/xtrans-sdk_1.1.bb +++ b/meta/packages/xorg-lib/xtrans-sdk_1.1.bb @@ -2,6 +2,4 @@ require xtrans_${PV}.bb DEPENDS = "util-macros-sdk" -SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.bz2" - inherit sdk diff --git a/meta/packages/xorg-lib/xtrans/abstract_socket_fix.patch b/meta/packages/xorg-lib/xtrans/abstract_socket_fix.patch new file mode 100644 index 0000000000..197da0735d --- /dev/null +++ b/meta/packages/xorg-lib/xtrans/abstract_socket_fix.patch @@ -0,0 +1,58 @@ +From 556a351de83fc6f401b02213dae95731553c216d Mon Sep 17 00:00:00 2001 +From: Loïc Minier +Date: Mon, 24 Mar 2008 19:38:27 +0000 +Subject: Bug #10489: Don't retry unix socket connect()s on ENOENT. + +If the socket isn't there, it's not gonna magically appear. Either it's +a server socket and you should have just waited for the SIGUSR1 from the +server, or it's a stale reference to an ICE socket. + +However, do retry once, so fallback from abstract to filesystem namespace +works. + +Originally Debian bug #385976. +--- +diff --git a/Xtranssock.c b/Xtranssock.c +index 8a7d2ec..da4afe9 100644 +--- a/Xtranssock.c ++++ b/Xtranssock.c +@@ -2146,8 +2146,13 @@ TRANS(SocketUNIXConnect) (XtransConnInfo ciptr, char *host, char *port) + errno = olderrno; + + /* +- * If the error was ENOENT, the server may be starting up +- * and we should try again. ++ * If the error was ENOENT, the server may be starting up; we used ++ * to suggest to try again in this case with ++ * TRANS_TRY_CONNECT_AGAIN, but this introduced problems for ++ * processes still referencing stale sockets in their environment. ++ * Hence, we now return a hard error, TRANS_CONNECT_FAILED, and it ++ * is suggested that higher level stacks handle retries on their ++ * level when they face a slow starting server. + * + * If the error was EWOULDBLOCK or EINPROGRESS then the socket + * was non-blocking and we should poll using select +@@ -2161,14 +2166,14 @@ TRANS(SocketUNIXConnect) (XtransConnInfo ciptr, char *host, char *port) + else if (olderrno == EINTR) + return TRANS_TRY_CONNECT_AGAIN; + else if (olderrno == ENOENT) { +- /* +- * If opening as abstract socket failed, try again "normally" +- */ +- if (abstract) ++ /* If opening as abstract socket failed, try again normally */ ++ if (abstract) { + ciptr->transptr->flags &= ~(TRANS_ABSTRACT); +- return TRANS_TRY_CONNECT_AGAIN; +- } +- else { ++ return TRANS_TRY_CONNECT_AGAIN; ++ } else { ++ return TRANS_CONNECT_FAILED; ++ } ++ } else { + PRMSG (2,"SocketUNIXConnect: Can't connect: errno = %d\n", + EGET(),0, 0); + +-- +cgit v0.7.2-37-g538c diff --git a/meta/packages/xorg-lib/xtrans_1.1.bb b/meta/packages/xorg-lib/xtrans_1.1.bb index 31e1392fd2..92c0557140 100644 --- a/meta/packages/xorg-lib/xtrans_1.1.bb +++ b/meta/packages/xorg-lib/xtrans_1.1.bb @@ -1,9 +1,13 @@ require xorg-lib-common.inc +SRC_URI += "file://abstract_socket_fix.patch;patch=1" + +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/xtrans" + DESCRIPTION = "network API translation layer to insulate X applications and \ libraries from OS network vageries." PE = "1" -PR = "r3" +PR = "r4" RDEPENDS_${PN}-dev = "" -- cgit v1.2.3-54-g00ecf