From b64cd0df884e7901ff13def0272df74962035920 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Mon, 4 Apr 2011 21:36:47 -0700 Subject: If protocol is "unix", use a Unix domain socket, not TCP Fixes fallback to local connections from Xlib's XOpenDisplay(), which will try with protocol "unix" if a hostname is specified and tcp fails (as it usually will now that most OS'es ship with -nolisten tcp enabled). Also fixes explicitly specifying DISPLAY as "unix/foo:0", which Xlib previously accepted for Unix domain sockets. Signed-off-by: Alan Coopersmith --- src/xcb_util.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/xcb_util.c b/src/xcb_util.c index 818746b..fde4f85 100644 --- a/src/xcb_util.c +++ b/src/xcb_util.c @@ -178,15 +178,13 @@ static int _xcb_open(const char *host, char *protocol, const int display) } #endif - if(*host || protocol) + /* If protocol or host is "unix", fall through to Unix socket code below */ + if ((!protocol || (strcmp("unix",protocol) != 0)) && + (*host != '\0') && (strcmp("unix",host) != 0)) { - if (protocol - || strcmp("unix",host)) { /* follow the old unix: rule */ - - /* display specifies TCP */ - unsigned short port = X_TCP_PORT + display; - return _xcb_open_tcp(host, protocol, port); - } + /* display specifies TCP */ + unsigned short port = X_TCP_PORT + display; + return _xcb_open_tcp(host, protocol, port); } #ifndef _WIN32 -- cgit v1.2.1