summaryrefslogtreecommitdiff
path: root/meta/packages/xorg-lib/xtrans/abstract_socket_fix.patch
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2008-03-25 15:13:23 +0000
committerRichard Purdie <richard@openedhand.com>2008-03-25 15:13:23 +0000
commitc6422207156a33edaf2d8dd72a37ef2d7ce7e966 (patch)
treea6cbffbd921ac438e9097d1c4e1393e4dae08423 /meta/packages/xorg-lib/xtrans/abstract_socket_fix.patch
parenta0d0bd249a37d39d4301963e86a9b0019b619599 (diff)
downloadopenembedded-core-c6422207156a33edaf2d8dd72a37ef2d7ce7e966.tar.gz
openembedded-core-c6422207156a33edaf2d8dd72a37ef2d7ce7e966.tar.bz2
openembedded-core-c6422207156a33edaf2d8dd72a37ef2d7ce7e966.tar.xz
openembedded-core-c6422207156a33edaf2d8dd72a37ef2d7ce7e966.zip
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
Diffstat (limited to 'meta/packages/xorg-lib/xtrans/abstract_socket_fix.patch')
-rw-r--r--meta/packages/xorg-lib/xtrans/abstract_socket_fix.patch58
1 files changed, 58 insertions, 0 deletions
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 000000000..197da0735
--- /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 <lool@dooz.org>
+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