Blob Blame History Raw
diff -up libxcb-1.1.91/src/xcb_util.c.abstract libxcb-1.1.91/src/xcb_util.c
--- libxcb-1.1.91/src/xcb_util.c.abstract	2008-07-13 07:42:41.000000000 -0400
+++ libxcb-1.1.91/src/xcb_util.c	2008-09-10 17:23:10.000000000 -0400
@@ -36,6 +36,7 @@
 #endif
 #include <netdb.h>
 #include <errno.h>
+#include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -251,6 +252,14 @@ static int _xcb_open_unix(char *protocol
     if (protocol && strcmp("unix",protocol))
         return -1;
 
+    memset(&addr, 0, sizeof(addr));
+    addr.sun_family = AF_UNIX;
+
+    /* try the abstract socket first */
+    strcpy(addr.sun_path + 1, file);
+    if(connect(fd, (struct sockaddr *) &addr, strlen(file) + 1 + offsetof(struct sockaddr_un, sun_path)) != -1)
+        return fd;
+
     strcpy(addr.sun_path, file);
     addr.sun_family = AF_UNIX;
 #if HAVE_SOCKADDR_SUN_LEN