From 66e428596b5053045be14b93f130df15ee240392 Mon Sep 17 00:00:00 2001 From: Frederic Koehler Date: Tue, 14 Aug 2012 21:49:14 -0400 Subject: [PATCH] mp_session: Always use global displayname This code tried to automatically generate the X DISPLAY from the combination of the hostname and display number; however 127.0.0.1:0 is normally rejected by X11, so this technique is no good. Fixes dticon hang on startup, caused by XOpenDisplay failure leading to this message from tttrace: tt_default_session_set(0x0x875190=="X 127.0.0.1 0") = 1032 (TT_ERR_ACCESS) --- cde/lib/tt/lib/mp/mp_session.C | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cde/lib/tt/lib/mp/mp_session.C b/cde/lib/tt/lib/mp/mp_session.C index ed962275..73bbe185 100644 --- a/cde/lib/tt/lib/mp/mp_session.C +++ b/cde/lib/tt/lib/mp/mp_session.C @@ -793,8 +793,17 @@ set_id(char *id) if (sscanf((char *)id, "X %s %d", host, &svnum) != 2) { return(TT_ERR_SESSION); } + /* We _cannot_ set _displayname based solely on host and svnum, + * because :0 is NOT the same as 127.0.0.1:0 as far as X11 + * is concerned: by default, it will only accept connections + * to the former. (XOpenDisplay etc. will fail if you try the below!) sprintf(dpname, "%s:%d", host, svnum); _displayname = dpname; + */ + if (! _displayname.len()) { + _displayname = _tt_global->xdisplayname; + } + _server_num = svnum; _env = _TT_ENV_X11; break; -- 2.25.1